Open Broadcaster Software
Free, open source software for live streaming and recording
obs-internal.h
Go to the documentation of this file.
1 /******************************************************************************
2  Copyright (C) 2013-2014 by Hugh Bailey <obs.jim@gmail.com>
3 
4  This program is free software: you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation, either version 2 of the License, or
7  (at your option) any later version.
8 
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with this program. If not, see <http://www.gnu.org/licenses/>.
16 ******************************************************************************/
17 
18 #pragma once
19 
20 #include "util/c99defs.h"
21 #include "util/darray.h"
22 #include "util/circlebuf.h"
23 #include "util/dstr.h"
24 #include "util/threading.h"
25 #include "util/platform.h"
26 #include "util/profiler.h"
27 #include "callback/signal.h"
28 #include "callback/proc.h"
29 
30 #include "graphics/graphics.h"
31 #include "graphics/matrix4.h"
32 
34 #include "media-io/video-io.h"
35 #include "media-io/audio-io.h"
36 
37 #include "obs.h"
38 
39 #define NUM_TEXTURES 2
40 #define NUM_CHANNELS 3
41 #define MICROSECOND_DEN 1000000
42 #define NUM_ENCODE_TEXTURES 3
43 #define NUM_ENCODE_TEXTURE_FRAMES_TO_WAIT 1
44 
45 static inline int64_t packet_dts_usec(struct encoder_packet *packet)
46 {
47  return packet->dts * MICROSECOND_DEN / packet->timebase_den;
48 }
49 
50 struct tick_callback {
51  void (*tick)(void *param, float seconds);
52  void *param;
53 };
54 
55 struct draw_callback {
56  void (*draw)(void *param, uint32_t cx, uint32_t cy);
57  void *param;
58 };
59 
60 /* ------------------------------------------------------------------------- */
61 /* validity checks */
62 
63 static inline bool obs_object_valid(const void *obj, const char *f,
64  const char *t)
65 {
66  if (!obj) {
67  blog(LOG_DEBUG, "%s: Null '%s' parameter", f, t);
68  return false;
69  }
70 
71  return true;
72 }
73 
74 #define obs_ptr_valid(ptr, func) obs_object_valid(ptr, func, #ptr)
75 #define obs_source_valid obs_ptr_valid
76 #define obs_output_valid obs_ptr_valid
77 #define obs_encoder_valid obs_ptr_valid
78 #define obs_service_valid obs_ptr_valid
79 
80 /* ------------------------------------------------------------------------- */
81 /* modules */
82 
83 struct obs_module {
84  char *mod_name;
85  const char *file;
86  char *bin_path;
87  char *data_path;
88  void *module;
89  bool loaded;
90 
91  bool (*load)(void);
92  void (*unload)(void);
93  void (*post_load)(void);
94  void (*set_locale)(const char *locale);
95  void (*free_locale)(void);
96  uint32_t (*ver)(void);
98  const char *(*name)(void);
99  const char *(*description)(void);
100  const char *(*author)(void);
101 
102  struct obs_module *next;
103 };
104 
105 extern void free_module(struct obs_module *mod);
106 
108  char *bin;
109  char *data;
110 };
111 
112 static inline void free_module_path(struct obs_module_path *omp)
113 {
114  if (omp) {
115  bfree(omp->bin);
116  bfree(omp->data);
117  }
118 }
119 
120 static inline bool check_path(const char *data, const char *path,
121  struct dstr *output)
122 {
123  dstr_copy(output, path);
124  dstr_cat(output, data);
125 
126  return os_file_exists(output->array);
127 }
128 
129 /* ------------------------------------------------------------------------- */
130 /* hotkeys */
131 
132 struct obs_hotkey {
134  char *name;
135  char *description;
136 
138  void *data;
139  int pressed;
140 
142  void *registerer;
143 
145 };
146 
151  bool pressed0;
152  bool pressed1;
153  void *data[2];
154 };
155 
157 
158 typedef struct obs_hotkeys_platform obs_hotkeys_platform_t;
159 
160 void *obs_hotkey_thread(void *param);
161 
162 struct obs_core_hotkeys;
163 bool obs_hotkeys_platform_init(struct obs_core_hotkeys *hotkeys);
164 void obs_hotkeys_platform_free(struct obs_core_hotkeys *hotkeys);
166  obs_key_t key);
167 
168 const char *obs_get_hotkey_translation(obs_key_t key, const char *def);
169 
170 struct obs_context_data;
171 void obs_hotkeys_context_release(struct obs_context_data *context);
172 
173 void obs_hotkeys_free(void);
174 
177  bool pressed;
179 
182 };
183 
184 struct obs_hotkey_name_map;
185 void obs_hotkey_name_map_free(void);
186 
187 /* ------------------------------------------------------------------------- */
188 /* views */
189 
190 struct obs_view {
191  pthread_mutex_t channels_mutex;
193 };
194 
195 extern bool obs_view_init(struct obs_view *view);
196 extern void obs_view_free(struct obs_view *view);
197 
198 /* ------------------------------------------------------------------------- */
199 /* displays */
200 
201 struct obs_display {
203  bool enabled;
204  uint32_t cx, cy;
207  pthread_mutex_t draw_callbacks_mutex;
208  pthread_mutex_t draw_info_mutex;
209  DARRAY(struct draw_callback) draw_callbacks;
210 
211  struct obs_display *next;
213 };
214 
215 extern bool obs_display_init(struct obs_display *display,
216  const struct gs_init_data *graphics_data);
217 extern void obs_display_free(struct obs_display *display);
218 
219 /* ------------------------------------------------------------------------- */
220 /* core */
221 
223  uint64_t timestamp;
224  int count;
225 };
226 
230  uint32_t handle;
231  uint64_t timestamp;
232  uint64_t lock_key;
233  int count;
234  bool released;
235 };
236 
239  void *param;
240 };
241 
270  pthread_mutex_t gpu_encoder_mutex;
273  DARRAY(obs_encoder_t *) gpu_encoders;
276  pthread_t gpu_encode_thread;
278  volatile bool gpu_encode_stop;
279 
280  uint64_t video_time;
283  double video_fps;
285  pthread_t video_thread;
286  uint32_t total_frames;
287  uint32_t lagged_frames;
289 
294 
295  uint32_t output_width;
296  uint32_t output_height;
297  uint32_t base_width;
298  uint32_t base_height;
299  float color_matrix[16];
301 
303 
312 
314 
315  pthread_mutex_t task_mutex;
316  struct circlebuf tasks;
317 };
318 
319 struct audio_monitor;
320 
323 
324  DARRAY(struct obs_source *) render_order;
325  DARRAY(struct obs_source *) root_nodes;
326 
327  uint64_t buffered_ts;
331 
332  float user_volume;
333 
334  pthread_mutex_t monitoring_mutex;
335  DARRAY(struct audio_monitor *) monitors;
338 };
339 
340 /* user sources, output channels, and displays */
348 
349  pthread_mutex_t sources_mutex;
350  pthread_mutex_t displays_mutex;
351  pthread_mutex_t outputs_mutex;
352  pthread_mutex_t encoders_mutex;
353  pthread_mutex_t services_mutex;
354  pthread_mutex_t audio_sources_mutex;
355  pthread_mutex_t draw_callbacks_mutex;
356  DARRAY(struct draw_callback) draw_callbacks;
357  DARRAY(struct tick_callback) tick_callbacks;
358 
360 
361  long long unnamed_index;
362 
364 
365  volatile bool valid;
366 };
367 
368 /* user hotkeys */
370  pthread_mutex_t mutex;
371  DARRAY(obs_hotkey_t) hotkeys;
373  DARRAY(obs_hotkey_pair_t) hotkey_pairs;
375 
376  pthread_t hotkey_thread;
382  DARRAY(obs_hotkey_binding_t) bindings;
383 
386 
388 
389  pthread_once_t name_map_init_token;
390  struct obs_hotkey_name_map *name_map;
391 
393 
395  char *mute;
396  char *unmute;
401 };
402 
403 struct obs_core {
405  DARRAY(struct obs_module_path) module_paths;
406 
407  DARRAY(struct obs_source_info) source_types;
408  DARRAY(struct obs_source_info) input_types;
409  DARRAY(struct obs_source_info) filter_types;
410  DARRAY(struct obs_source_info) transition_types;
411  DARRAY(struct obs_output_info) output_types;
412  DARRAY(struct obs_encoder_info) encoder_types;
413  DARRAY(struct obs_service_info) service_types;
414  DARRAY(struct obs_modal_ui) modal_ui_callbacks;
415  DARRAY(struct obs_modeless_ui) modeless_ui_callbacks;
416 
419 
420  char *locale;
424 
425  /* segmented into multiple sub-structures to keep things a bit more
426  * clean and organized */
431 
433 };
434 
435 extern struct obs_core *obs;
436 
437 extern void *obs_graphics_thread(void *param);
438 
439 extern gs_effect_t *obs_load_effect(gs_effect_t **effect, const char *file);
440 
441 extern bool audio_callback(void *param, uint64_t start_ts_in,
442  uint64_t end_ts_in, uint64_t *out_ts,
443  uint32_t mixers, struct audio_output_data *mixes);
444 
445 extern void
446 start_raw_video(video_t *video, const struct video_scale_info *conversion,
447  void (*callback)(void *param, struct video_data *frame),
448  void *param);
449 extern void stop_raw_video(video_t *video,
450  void (*callback)(void *param,
451  struct video_data *frame),
452  void *param);
453 
454 /* ------------------------------------------------------------------------- */
455 /* obs shared context data */
456 
458  char *name;
459  void *data;
464 
465  DARRAY(obs_hotkey_id) hotkeys;
466  DARRAY(obs_hotkey_pair_id) hotkey_pairs;
468 
469  DARRAY(char *) rename_cache;
470  pthread_mutex_t rename_cache_mutex;
471 
472  pthread_mutex_t *mutex;
475 
476  bool private;
477 };
478 
479 extern bool obs_context_data_init(struct obs_context_data *context,
481  const char *name, obs_data_t *hotkey_data,
482  bool private);
483 extern void obs_context_data_free(struct obs_context_data *context);
484 
485 extern void obs_context_data_insert(struct obs_context_data *context,
486  pthread_mutex_t *mutex, void *first);
487 extern void obs_context_data_remove(struct obs_context_data *context);
488 
489 extern void obs_context_data_setname(struct obs_context_data *context,
490  const char *name);
491 
492 /* ------------------------------------------------------------------------- */
493 /* ref-counting */
494 
495 struct obs_weak_ref {
496  volatile long refs;
497  volatile long weak_refs;
498 };
499 
500 static inline void obs_ref_addref(struct obs_weak_ref *ref)
501 {
502  os_atomic_inc_long(&ref->refs);
503 }
504 
505 static inline bool obs_ref_release(struct obs_weak_ref *ref)
506 {
507  return os_atomic_dec_long(&ref->refs) == -1;
508 }
509 
510 static inline void obs_weak_ref_addref(struct obs_weak_ref *ref)
511 {
512  os_atomic_inc_long(&ref->weak_refs);
513 }
514 
515 static inline bool obs_weak_ref_release(struct obs_weak_ref *ref)
516 {
517  return os_atomic_dec_long(&ref->weak_refs) == -1;
518 }
519 
520 static inline bool obs_weak_ref_get_ref(struct obs_weak_ref *ref)
521 {
522  long owners = ref->refs;
523  while (owners > -1) {
524  if (os_atomic_compare_swap_long(&ref->refs, owners, owners + 1))
525  return true;
526 
527  owners = ref->refs;
528  }
529 
530  return false;
531 }
532 
533 /* ------------------------------------------------------------------------- */
534 /* sources */
535 
536 struct async_frame {
539  bool used;
540 };
541 
547 };
548 
549 struct audio_action {
550  uint64_t timestamp;
552  union {
553  float vol;
554  bool set;
555  };
556 };
557 
561 };
562 
565  void *param;
566 };
567 
568 struct obs_source {
572 
573  /* general exposed flags that can be set for the source */
574  uint32_t flags;
575  uint32_t default_flags;
576  uint32_t last_obs_ver;
577 
578  /* indicates ownership of the info.id buffer */
580 
581  /* signals to call the source update in the video thread */
583 
584  /* ensures show/hide are only called once */
585  volatile long show_refs;
586 
587  /* ensures activate/deactivate are only called once */
588  volatile long activate_refs;
589 
590  /* used to indicate that the source has been removed and all
591  * references to it should be released (not exactly how I would prefer
592  * to handle things but it's the best option) */
593  bool removed;
594 
595  bool active;
596  bool showing;
597 
598  /* used to temporarily disable sources if needed */
599  bool enabled;
600 
601  /* timing (if video is present, is based upon video) */
602  volatile bool timing_set;
603  volatile uint64_t timing_adjust;
604  uint64_t resample_offset;
605  uint64_t last_audio_ts;
608  uint64_t last_frame_ts;
611 
612  /* audio */
618  bool muted;
621  uint64_t audio_ts;
624  DARRAY(struct audio_action) audio_actions;
629  pthread_mutex_t audio_actions_mutex;
630  pthread_mutex_t audio_buf_mutex;
631  pthread_mutex_t audio_mutex;
632  pthread_mutex_t audio_cb_mutex;
633  DARRAY(struct audio_cb_info) audio_cb_list;
636  uint32_t audio_mixers;
637  float user_volume;
638  float volume;
639  int64_t sync_offset;
641  float balance;
642 
643  /* async video data */
661  DARRAY(struct async_frame) async_cache;
662  DARRAY(struct obs_source_frame *) async_frames;
663  pthread_mutex_t async_mutex;
664  uint32_t async_width;
665  uint32_t async_height;
670 
671  /* async video deinterlacing */
682 
683  /* filters */
686  DARRAY(struct obs_source *) filters;
687  pthread_mutex_t filter_mutex;
691 
692  /* sources specific hotkeys */
706 
707  /* transitions */
710  pthread_mutex_t transition_tex_mutex;
712  pthread_mutex_t transition_mutex;
724  uint32_t transition_cx;
725  uint32_t transition_cy;
731 
732  struct audio_monitor *monitor;
734 
736 };
737 
738 extern struct obs_source_info *get_source_info(const char *id);
739 extern struct obs_source_info *get_source_info2(const char *unversioned_id,
740  uint32_t ver);
741 extern bool obs_source_init_context(struct obs_source *source,
742  obs_data_t *settings, const char *name,
743  obs_data_t *hotkey_data, bool private);
744 
745 extern bool obs_transition_init(obs_source_t *transition);
746 extern void obs_transition_free(obs_source_t *transition);
747 extern void obs_transition_tick(obs_source_t *transition, float t);
748 extern void obs_transition_enum_sources(obs_source_t *transition,
749  obs_source_enum_proc_t enum_callback,
750  void *param);
751 extern void obs_transition_save(obs_source_t *source, obs_data_t *data);
752 extern void obs_transition_load(obs_source_t *source, obs_data_t *data);
753 
754 struct audio_monitor *audio_monitor_create(obs_source_t *source);
755 void audio_monitor_reset(struct audio_monitor *monitor);
756 extern void audio_monitor_destroy(struct audio_monitor *monitor);
757 
758 extern obs_source_t *obs_source_create_set_last_ver(const char *id,
759  const char *name,
760  obs_data_t *settings,
761  obs_data_t *hotkey_data,
762  uint32_t last_obs_ver);
763 extern void obs_source_destroy(struct obs_source *source);
764 
765 enum view_type {
768 };
769 
770 static inline void obs_source_dosignal(struct obs_source *source,
771  const char *signal_obs,
772  const char *signal_source)
773 {
774  struct calldata data;
775  uint8_t stack[128];
776 
777  calldata_init_fixed(&data, stack, sizeof(stack));
778  calldata_set_ptr(&data, "source", source);
779  if (signal_obs && !source->context.private)
780  signal_handler_signal(obs->signals, signal_obs, &data);
781  if (signal_source)
782  signal_handler_signal(source->context.signals, signal_source,
783  &data);
784 }
785 
786 /* maximum timestamp variance in nanoseconds */
787 #define MAX_TS_VAR 2000000000ULL
788 
789 static inline bool frame_out_of_bounds(const obs_source_t *source, uint64_t ts)
790 {
791  if (ts < source->last_frame_ts)
792  return ((source->last_frame_ts - ts) > MAX_TS_VAR);
793  else
794  return ((ts - source->last_frame_ts) > MAX_TS_VAR);
795 }
796 
797 static inline enum gs_color_format
798 convert_video_format(enum video_format format)
799 {
800  switch (format) {
801  case VIDEO_FORMAT_RGBA:
802  return GS_RGBA;
803  case VIDEO_FORMAT_BGRA:
804  case VIDEO_FORMAT_I40A:
805  case VIDEO_FORMAT_I42A:
806  case VIDEO_FORMAT_YUVA:
807  case VIDEO_FORMAT_AYUV:
808  return GS_BGRA;
809  default:
810  return GS_BGRX;
811  }
812 }
813 
814 extern void obs_source_activate(obs_source_t *source, enum view_type type);
815 extern void obs_source_deactivate(obs_source_t *source, enum view_type type);
816 extern void obs_source_video_tick(obs_source_t *source, float seconds);
817 extern float obs_source_get_target_volume(obs_source_t *source,
818  obs_source_t *target);
819 
820 extern void obs_source_audio_render(obs_source_t *source, uint32_t mixers,
821  size_t channels, size_t sample_rate,
822  size_t size);
823 
824 extern void add_alignment(struct vec2 *v, uint32_t align, int cx, int cy);
825 
826 extern struct obs_source_frame *filter_async_video(obs_source_t *source,
827  struct obs_source_frame *in);
828 extern bool update_async_texture(struct obs_source *source,
829  const struct obs_source_frame *frame,
830  gs_texture_t *tex, gs_texrender_t *texrender);
831 extern bool update_async_textures(struct obs_source *source,
832  const struct obs_source_frame *frame,
834  gs_texrender_t *texrender);
835 extern bool set_async_texture_size(struct obs_source *source,
836  const struct obs_source_frame *frame);
837 extern void remove_async_frame(obs_source_t *source,
838  struct obs_source_frame *frame);
839 
840 extern void set_deinterlace_texture_size(obs_source_t *source);
841 extern void deinterlace_process_last_frame(obs_source_t *source,
842  uint64_t sys_time);
843 extern void deinterlace_update_async_video(obs_source_t *source);
844 extern void deinterlace_render(obs_source_t *s);
845 
846 /* ------------------------------------------------------------------------- */
847 /* outputs */
848 
849 enum delay_msg {
853 };
854 
855 struct delay_data {
857  uint64_t ts;
859 };
860 
861 typedef void (*encoded_callback_t)(void *data, struct encoder_packet *packet);
862 
866 };
867 
868 #define CAPTION_LINE_CHARS (32)
869 #define CAPTION_LINE_BYTES (4 * CAPTION_LINE_CHARS)
870 struct caption_text {
874 };
875 
876 struct pause_data {
877  pthread_mutex_t mutex;
878  uint64_t last_video_ts;
879  uint64_t ts_start;
880  uint64_t ts_end;
881  uint64_t ts_offset;
882 };
883 
884 extern bool video_pause_check(struct pause_data *pause, uint64_t timestamp);
885 extern bool audio_pause_check(struct pause_data *pause, struct audio_data *data,
886  size_t sample_rate);
887 extern void pause_reset(struct pause_data *pause);
888 
889 struct obs_output {
893 
894  /* indicates ownership of the info.id buffer */
896 
899  volatile bool data_active;
901  int64_t video_offset;
907  pthread_mutex_t interleaved_mutex;
908  DARRAY(struct encoder_packet) interleaved_packets;
910 
915  pthread_t reconnect_thread;
917  volatile bool reconnecting;
918  volatile bool reconnect_thread_active;
919 
923 
925 
926  volatile bool active;
927  volatile bool paused;
933  size_t mixer_mask;
934 
936 
938  uint64_t audio_start_ts;
939  uint64_t video_start_ts;
940  size_t audio_size;
941  size_t planes;
942  size_t sample_rate;
944 
945  uint32_t scaled_width;
946  uint32_t scaled_height;
947 
952 
953  pthread_mutex_t caption_mutex;
957 
958  bool valid;
959 
960  uint64_t active_delay_ns;
962  struct circlebuf delay_data; /* struct delay_data */
963  pthread_mutex_t delay_mutex;
964  uint32_t delay_sec;
965  uint32_t delay_flags;
966  uint32_t delay_cur_flags;
967  volatile long delay_restart_refs;
968  volatile bool delay_active;
969  volatile bool delay_capturing;
970 
972 
974 };
975 
976 static inline void do_output_signal(struct obs_output *output,
977  const char *signal)
978 {
979  struct calldata params = {0};
980  calldata_set_ptr(&params, "output", output);
981  signal_handler_signal(output->context.signals, signal, &params);
982  calldata_free(&params);
983 }
984 
985 extern void process_delay(void *data, struct encoder_packet *packet);
986 extern void obs_output_cleanup_delay(obs_output_t *output);
987 extern bool obs_output_delay_start(obs_output_t *output);
988 extern void obs_output_delay_stop(obs_output_t *output);
989 extern bool obs_output_actual_start(obs_output_t *output);
990 extern void obs_output_actual_stop(obs_output_t *output, bool force,
991  uint64_t ts);
992 
993 extern const struct obs_output_info *find_output(const char *id);
994 
995 extern void obs_output_remove_encoder(struct obs_output *output,
996  struct obs_encoder *encoder);
997 
998 extern void
1000  const struct encoder_packet *src);
1001 void obs_output_destroy(obs_output_t *output);
1002 
1003 /* ------------------------------------------------------------------------- */
1004 /* encoders */
1005 
1009 };
1010 
1013  void (*new_packet)(void *param, struct encoder_packet *packet);
1014  void *param;
1015 };
1016 
1017 struct obs_encoder {
1021 
1022  /* allows re-routing to another encoder */
1024 
1025  pthread_mutex_t init_mutex;
1026 
1027  uint32_t samplerate;
1028  size_t planes;
1029  size_t blocksize;
1030  size_t framesize;
1032 
1033  size_t mixer_idx;
1034 
1035  uint32_t scaled_width;
1036  uint32_t scaled_height;
1038 
1039  volatile bool active;
1040  volatile bool paused;
1042 
1043  /* indicates ownership of the info.id buffer */
1045 
1046  uint32_t timebase_num;
1047  uint32_t timebase_den;
1048 
1049  int64_t cur_pts;
1050 
1053 
1054  /* if a video encoder is paired with an audio encoder, make it start
1055  * up at the specific timestamp. if this is the audio encoder,
1056  * wait_for_video makes it wait until it's ready to sync up with
1057  * video */
1061  int64_t offset_usec;
1062  uint64_t first_raw_ts;
1063  uint64_t start_ts;
1064 
1065  pthread_mutex_t outputs_mutex;
1066  DARRAY(obs_output_t *) outputs;
1067 
1069 
1070  /* stores the video/audio media output pointer. video_t *or audio_t **/
1071  void *media;
1072 
1073  pthread_mutex_t callbacks_mutex;
1074  DARRAY(struct encoder_callback) callbacks;
1075 
1077 
1080 };
1081 
1082 extern struct obs_encoder_info *find_encoder(const char *id);
1083 
1084 extern bool obs_encoder_initialize(obs_encoder_t *encoder);
1085 extern void obs_encoder_shutdown(obs_encoder_t *encoder);
1086 
1087 extern void obs_encoder_start(obs_encoder_t *encoder,
1088  void (*new_packet)(void *param,
1089  struct encoder_packet *packet),
1090  void *param);
1091 extern void obs_encoder_stop(obs_encoder_t *encoder,
1092  void (*new_packet)(void *param,
1093  struct encoder_packet *packet),
1094  void *param);
1095 
1096 extern void obs_encoder_add_output(struct obs_encoder *encoder,
1097  struct obs_output *output);
1098 extern void obs_encoder_remove_output(struct obs_encoder *encoder,
1099  struct obs_output *output);
1100 
1101 extern bool start_gpu_encode(obs_encoder_t *encoder);
1102 extern void stop_gpu_encode(obs_encoder_t *encoder);
1103 
1104 extern bool do_encode(struct obs_encoder *encoder, struct encoder_frame *frame);
1105 extern void send_off_encoder_packet(obs_encoder_t *encoder, bool success,
1106  bool received, struct encoder_packet *pkt);
1107 
1108 void obs_encoder_destroy(obs_encoder_t *encoder);
1109 
1110 /* ------------------------------------------------------------------------- */
1111 /* services */
1112 
1116 };
1117 
1118 struct obs_service {
1122 
1123  /* indicates ownership of the info.id buffer */
1125 
1126  bool active;
1127  bool destroy;
1129 };
1130 
1131 extern const struct obs_service_info *find_service(const char *id);
1132 
1133 extern void obs_service_activate(struct obs_service *service);
1134 extern void obs_service_deactivate(struct obs_service *service, bool remove);
1135 extern bool obs_service_initialize(struct obs_service *service,
1136  struct obs_output *output);
1137 
1138 void obs_service_destroy(obs_service_t *service);
obs_source
Definition: obs-internal.h:568
draw_callback::param
void * param
Definition: obs-internal.h:57
obs_source_info
Definition: obs-source.h:201
obs_core_audio::monitoring_mutex
pthread_mutex_t monitoring_mutex
Definition: obs-internal.h:334
obs_output::data_active
volatile bool data_active
Definition: obs-internal.h:899
MICROSECOND_DEN
#define MICROSECOND_DEN
Definition: obs-internal.h:41
obs_hotkey::registerer_type
obs_hotkey_registerer_t registerer_type
Definition: obs-internal.h:141
obs_encoder::planes
size_t planes
Definition: obs-internal.h:1028
obs_source_get_target_volume
float obs_source_get_target_volume(obs_source_t *source, obs_source_t *target)
obs_task_info::task
obs_task_t task
Definition: obs-internal.h:238
obs_core_hotkeys::strict_modifiers
bool strict_modifiers
Definition: obs-internal.h:380
obs_hotkeys_context_release
void obs_hotkeys_context_release(struct obs_context_data *context)
obs_core_data::services_mutex
pthread_mutex_t services_mutex
Definition: obs-internal.h:353
obs_module_path::bin
char * bin
Definition: obs-internal.h:108
obs_encoder::media
void * media
Definition: obs-internal.h:1071
obs_source::control
struct obs_weak_source * control
Definition: obs-internal.h:571
obs_source::audio_failed
bool audio_failed
Definition: obs-internal.h:613
obs_core_hotkeys::mutex
pthread_mutex_t mutex
Definition: obs-internal.h:370
obs_output::mixer_mask
size_t mixer_mask
Definition: obs-internal.h:933
obs_core_data::main_view
struct obs_view main_view
Definition: obs-internal.h:359
obs_source::transition_scale_type
enum obs_transition_scale_type transition_scale_type
Definition: obs-internal.h:729
AUDIO_ACTION_PTM
@ AUDIO_ACTION_PTM
Definition: obs-internal.h:546
obs_module::post_load
void(* post_load)(void)
Definition: obs-internal.h:93
obs_encoder::active
volatile bool active
Definition: obs-internal.h:1039
obs_view_free
void obs_view_free(struct obs_view *view)
obs_weak_ref
Definition: obs-internal.h:495
obs_key_t
enum obs_key obs_key_t
Definition: obs-hotkey.h:43
audio_cb_info
Definition: obs-internal.h:563
obs_core_video::mapped_surfaces
gs_stagesurf_t * mapped_surfaces[NUM_CHANNELS]
Definition: obs-internal.h:266
obs_source::DARRAY
DARRAY(struct audio_action) audio_actions
obs_module::data_path
char * data_path
Definition: obs-internal.h:87
obs_core_video::opaque_effect
gs_effect_t * opaque_effect
Definition: obs-internal.h:256
blog
EXPORT void blog(int log_level, const char *format,...)
gs_stagesurf_t
struct gs_stage_surface gs_stagesurf_t
Definition: graphics.h:267
obs_core_data::encoders_mutex
pthread_mutex_t encoders_mutex
Definition: obs-internal.h:352
AUDIO_ACTION_VOL
@ AUDIO_ACTION_VOL
Definition: obs-internal.h:543
obs_source_audio_render
void obs_source_audio_render(obs_source_t *source, uint32_t mixers, size_t channels, size_t sample_rate, size_t size)
graphics.h
obs_core_video::deinterlace_blend_2x_effect
gs_effect_t * deinterlace_blend_2x_effect
Definition: obs-internal.h:309
obs_output::reconnecting
volatile bool reconnecting
Definition: obs-internal.h:917
obs_hotkey_registerer_t
enum obs_hotkey_registerer_type obs_hotkey_registerer_t
Definition: obs-hotkey.h:61
obs_service_initialize
bool obs_service_initialize(struct obs_service *service, struct obs_output *output)
pause_reset
void pause_reset(struct pause_data *pause)
audio_monitor_reset
void audio_monitor_reset(struct audio_monitor *monitor)
obs_output::video_offset
int64_t video_offset
Definition: obs-internal.h:901
obs_deinterlace_mode
obs_deinterlace_mode
Definition: obs.h:1107
obs_source::transitioning_video
bool transitioning_video
Definition: obs-internal.h:718
obs_encoder::first_received
bool first_received
Definition: obs-internal.h:1059
audio_cb_info::param
void * param
Definition: obs-internal.h:565
obs_core_hotkeys::push_to_mute
char * push_to_mute
Definition: obs-internal.h:397
obs_hotkey_pair::pressed0
bool pressed0
Definition: obs-internal.h:151
obs_transition_free
void obs_transition_free(obs_source_t *transition)
obs_core_video::video
video_t * video
Definition: obs-internal.h:284
gs_effect
Definition: effect.h:150
obs_display::draw_info_mutex
pthread_mutex_t draw_info_mutex
Definition: obs-internal.h:208
obs_vframe_info::timestamp
uint64_t timestamp
Definition: obs-internal.h:223
obs_core::DARRAY
DARRAY(struct obs_module_path) module_paths
obs_hotkey_binding::modifiers_match
bool modifiers_match
Definition: obs-internal.h:178
obs_core_hotkeys::sceneitem_hide
char * sceneitem_hide
Definition: obs-internal.h:400
obs_obj_type
obs_obj_type
Definition: obs.h:694
obs_hotkey::description
char * description
Definition: obs-internal.h:135
obs_output::total_frames
int total_frames
Definition: obs-internal.h:924
obs_core_video::bicubic_effect
gs_effect_t * bicubic_effect
Definition: obs-internal.h:260
obs_service::destroy
bool destroy
Definition: obs-internal.h:1127
obs_hotkeys_platform_t
struct obs_hotkeys_platform obs_hotkeys_platform_t
Definition: obs-internal.h:158
obs_output::audio_conversion_set
bool audio_conversion_set
Definition: obs-internal.h:949
obs_module::module
void * module
Definition: obs-internal.h:88
obs_context_data_remove
void obs_context_data_remove(struct obs_context_data *context)
calldata
Definition: calldata.h:46
obs_encoder::scaled_height
uint32_t scaled_height
Definition: obs-internal.h:1036
update_async_textures
bool update_async_textures(struct obs_source *source, const struct obs_source_frame *frame, gs_texture_t *tex[MAX_AV_PLANES], gs_texrender_t *texrender)
obs_core_data::private_data
obs_data_t * private_data
Definition: obs-internal.h:363
obs_service::info
struct obs_service_info info
Definition: obs-internal.h:1120
remove_async_frame
void remove_async_frame(obs_source_t *source, struct obs_source_frame *frame)
obs_core_video::deinterlace_linear_effect
gs_effect_t * deinterlace_linear_effect
Definition: obs-internal.h:306
obs_source::transition_use_fixed_duration
bool transition_use_fixed_duration
Definition: obs-internal.h:727
filter_async_video
struct obs_source_frame * filter_async_video(obs_source_t *source, struct obs_source_frame *in)
stop_raw_video
void stop_raw_video(video_t *video, void(*callback)(void *param, struct video_data *frame), void *param)
obs_task_t
void(* obs_task_t)(void *param)
Definition: obs.h:748
obs_output::delay_callback
encoded_callback_t delay_callback
Definition: obs-internal.h:961
obs_display::draw_callbacks_mutex
pthread_mutex_t draw_callbacks_mutex
Definition: obs-internal.h:207
obs_core_hotkeys::hotkey_thread_initialized
bool hotkey_thread_initialized
Definition: obs-internal.h:377
obs_source::transition_sources
obs_source_t * transition_sources[2]
Definition: obs-internal.h:713
obs_display_init
bool obs_display_init(struct obs_display *display, const struct gs_init_data *graphics_data)
obs_core_video::raw_active
long raw_active
Definition: obs-internal.h:268
obs_source::transition_manual_val
float transition_manual_val
Definition: obs-internal.h:717
audio_monitor_create
struct audio_monitor * audio_monitor_create(obs_source_t *source)
obs_core::procs
proc_handler_t * procs
Definition: obs-internal.h:418
obs_core_video::repeat_effect
gs_effect_t * repeat_effect
Definition: obs-internal.h:258
obs_encoder::scaled_width
uint32_t scaled_width
Definition: obs-internal.h:1035
obs_source::transition_alignment
uint32_t transition_alignment
Definition: obs-internal.h:721
obs_core_video::conversion_width_i
float conversion_width_i
Definition: obs-internal.h:293
caption_text::display_duration
double display_duration
Definition: obs-internal.h:872
obs_display::size_changed
bool size_changed
Definition: obs-internal.h:202
obs_display::swap
gs_swapchain_t * swap
Definition: obs-internal.h:206
gs_color_format
gs_color_format
Definition: graphics.h:56
obs_core::data
struct obs_core_data data
Definition: obs-internal.h:429
obs_module::loaded
bool loaded
Definition: obs-internal.h:89
obs_output::delay_sec
uint32_t delay_sec
Definition: obs-internal.h:964
obs_source::push_to_talk_delay
uint64_t push_to_talk_delay
Definition: obs-internal.h:704
obs_hotkey::pair_partner_id
obs_hotkey_id pair_partner_id
Definition: obs-internal.h:144
obs_source::deinterlace_top_first
bool deinterlace_top_first
Definition: obs-internal.h:680
obs_source_deactivate
void obs_source_deactivate(obs_source_t *source, enum view_type type)
obs_hotkey::pressed
int pressed
Definition: obs-internal.h:139
obs_core_video::gpu_encode_thread
pthread_t gpu_encode_thread
Definition: obs-internal.h:276
async_frame::unused_count
long unused_count
Definition: obs-internal.h:538
MAIN_VIEW
@ MAIN_VIEW
Definition: obs-internal.h:766
obs_service::output
struct obs_output * output
Definition: obs-internal.h:1128
obs_output::control
struct obs_weak_output * control
Definition: obs-internal.h:892
audio_convert_info
Definition: audio-io.h:104
obs_output::stop_code
int stop_code
Definition: obs-internal.h:909
obs_source::rendering_filter
bool rendering_filter
Definition: obs-internal.h:690
obs_core_data::first_service
struct obs_service * first_service
Definition: obs-internal.h:347
obs_source::filter_target
struct obs_source * filter_target
Definition: obs-internal.h:685
obs_output::reconnect_retry_sec
int reconnect_retry_sec
Definition: obs-internal.h:911
obs_scale_type
obs_scale_type
Definition: obs.h:114
obs_source::async_width
uint32_t async_width
Definition: obs-internal.h:664
OBS_KEY_LAST_VALUE
@ OBS_KEY_LAST_VALUE
Definition: obs-hotkey.h:41
obs_source::transition_mode
enum obs_transition_mode transition_mode
Definition: obs-internal.h:728
obs_display
Definition: obs-internal.h:201
obs_tex_frame::count
int count
Definition: obs-internal.h:233
obs_encoder::profile_encoder_encode_name
const char * profile_encoder_encode_name
Definition: obs-internal.h:1078
obs_encoder::samplerate
uint32_t samplerate
Definition: obs-internal.h:1027
obs_output::delay_active
volatile bool delay_active
Definition: obs-internal.h:968
obs_vframe_info::count
int count
Definition: obs-internal.h:224
obs_context_data_init
bool obs_context_data_init(struct obs_context_data *context, enum obs_obj_type type, obs_data_t *settings, const char *name, obs_data_t *hotkey_data, bool private)
obs_output_actual_stop
void obs_output_actual_stop(obs_output_t *output, bool force, uint64_t ts)
obs_source::cur_async_frame
struct obs_source_frame * cur_async_frame
Definition: obs-internal.h:646
obs_context_data_free
void obs_context_data_free(struct obs_context_data *context)
obs_core_video::default_effect
gs_effect_t * default_effect
Definition: obs-internal.h:254
obs_source::audio_actions_mutex
pthread_mutex_t audio_actions_mutex
Definition: obs-internal.h:629
obs_view
Definition: obs-internal.h:190
obs_encoder_start
void obs_encoder_start(obs_encoder_t *encoder, void(*new_packet)(void *param, struct encoder_packet *packet), void *param)
obs_context_data::mutex
pthread_mutex_t * mutex
Definition: obs-internal.h:472
do_encode
bool do_encode(struct obs_encoder *encoder, struct encoder_frame *frame)
obs_core_video::gpu_encode_semaphore
os_sem_t * gpu_encode_semaphore
Definition: obs-internal.h:274
obs_source::deinterlace_offset
uint64_t deinterlace_offset
Definition: obs-internal.h:672
obs_hotkey_pair::data
void * data[2]
Definition: obs-internal.h:153
obs_core_hotkeys::unmute
char * unmute
Definition: obs-internal.h:396
obs_output::end_data_capture_thread
pthread_t end_data_capture_thread
Definition: obs-internal.h:905
GS_BGRA
@ GS_BGRA
Definition: graphics.h:62
obs_encoder::pause
struct pause_data pause
Definition: obs-internal.h:1076
video-io.h
obs_hotkey::name
char * name
Definition: obs-internal.h:134
obs_transition_init
bool obs_transition_init(obs_source_t *transition)
find_output
const struct obs_output_info * find_output(const char *id)
obs_core_video::gpu_encoder_mutex
pthread_mutex_t gpu_encoder_mutex
Definition: obs-internal.h:270
matrix4
Definition: matrix4.h:32
obs_encoder::outputs_mutex
pthread_mutex_t outputs_mutex
Definition: obs-internal.h:1065
obs_source::async_format
enum video_format async_format
Definition: obs-internal.h:648
obs_core_video::output_texture
gs_texture_t * output_texture
Definition: obs-internal.h:246
set_deinterlace_texture_size
void set_deinterlace_texture_size(obs_source_t *source)
obs_hotkey_pair::pair_id
obs_hotkey_pair_id pair_id
Definition: obs-internal.h:148
obs_encoder_info
Definition: obs-encoder.h:115
obs_encoder::timebase_den
uint32_t timebase_den
Definition: obs-internal.h:1047
AUDIO_OUTPUT_FRAMES
#define AUDIO_OUTPUT_FRAMES
Definition: audio-io.h:30
audio_action::type
enum audio_action_type type
Definition: obs-internal.h:551
obs_output::starting_drawn_count
uint32_t starting_drawn_count
Definition: obs-internal.h:920
gs_init_data
Definition: graphics.h:484
audio_output_data
Definition: audio-io.h:84
obs_encoder::control
struct obs_weak_encoder * control
Definition: obs-internal.h:1020
obs_encoder::owns_info_id
bool owns_info_id
Definition: obs-internal.h:1044
obs_output::delay_flags
uint32_t delay_flags
Definition: obs-internal.h:965
encoder_packet::data
uint8_t * data
Definition: obs-encoder.h:45
obs_core_audio::DARRAY
DARRAY(struct obs_source *) render_order
obs_hotkey_binding::hotkey_id
obs_hotkey_id hotkey_id
Definition: obs-internal.h:180
find_service
const struct obs_service_info * find_service(const char *id)
obs_source_destroy
void obs_source_destroy(struct obs_source *source)
obs_source::transition_start_time
uint64_t transition_start_time
Definition: obs-internal.h:708
set_async_texture_size
bool set_async_texture_size(struct obs_source *source, const struct obs_source_frame *frame)
obs_source::audio_storage_size
size_t audio_storage_size
Definition: obs-internal.h:635
obs_output_info
Definition: obs-output.h:34
obs_data_t
struct obs_data obs_data_t
Definition: obs-data.h:42
VIDEO_FORMAT_BGRA
@ VIDEO_FORMAT_BGRA
Definition: video-io.h:47
obs_source::owns_info_id
bool owns_info_id
Definition: obs-internal.h:579
obs_core_video::copy_surfaces
gs_stagesurf_t * copy_surfaces[NUM_TEXTURES][NUM_CHANNELS]
Definition: obs-internal.h:244
obs_source::balance
float balance
Definition: obs-internal.h:641
obs_module
Definition: obs-internal.h:83
obs_output::video
video_t * video
Definition: obs-internal.h:928
obs_output::context
struct obs_context_data context
Definition: obs-internal.h:890
obs_output::planes
size_t planes
Definition: obs-internal.h:941
obs_source::transition_texrender
gs_texrender_t * transition_texrender[2]
Definition: obs-internal.h:711
bfree
EXPORT void bfree(void *ptr)
obs_source::async_prev_textures
gs_texture_t * async_prev_textures[MAX_AV_PLANES]
Definition: obs-internal.h:676
obs_core::audio
struct obs_core_audio audio
Definition: obs-internal.h:428
obs_core_video::convert_textures
gs_texture_t * convert_textures[NUM_CHANNELS]
Definition: obs-internal.h:247
obs_vframe_info
Definition: obs-internal.h:222
obs_source::private_settings
obs_data_t * private_settings
Definition: obs-internal.h:735
obs_source::filter_parent
struct obs_source * filter_parent
Definition: obs-internal.h:684
obs_source::async_convert_height
uint32_t async_convert_height[MAX_AV_PLANES]
Definition: obs-internal.h:669
obs_module::ver
uint32_t(* ver)(void)
Definition: obs-internal.h:96
obs_context_data
Definition: obs-internal.h:457
obs_encoder::info
struct obs_encoder_info info
Definition: obs-internal.h:1019
obs_source::transition_manual_clamp
float transition_manual_clamp
Definition: obs-internal.h:714
obs_core_video::default_rect_effect
gs_effect_t * default_rect_effect
Definition: obs-internal.h:255
obs_display_free
void obs_display_free(struct obs_display *display)
obs_source::push_to_talk_key
obs_hotkey_id push_to_talk_key
Definition: obs-internal.h:695
obs_output::delay_cur_flags
uint32_t delay_cur_flags
Definition: obs-internal.h:966
obs_hotkey_pair_id
size_t obs_hotkey_pair_id
Definition: obs-hotkey.h:25
encoder_callback::param
void * param
Definition: obs-internal.h:1014
obs_core_video::solid_effect
gs_effect_t * solid_effect
Definition: obs-internal.h:257
obs_core_video::gpu_encoder_active
long gpu_encoder_active
Definition: obs-internal.h:269
obs_output_delay_start
bool obs_output_delay_start(obs_output_t *output)
obs_core_video::total_frames
uint32_t total_frames
Definition: obs-internal.h:286
obs_source::transition_manual_torque
float transition_manual_torque
Definition: obs-internal.h:715
obs_source::audio_active
bool audio_active
Definition: obs-internal.h:616
audio_action
Definition: obs-internal.h:549
obs_source::flags
uint32_t flags
Definition: obs-internal.h:574
obs_core_video::color_matrix
float color_matrix[16]
Definition: obs-internal.h:299
obs_weak_source::source
struct obs_source * source
Definition: obs-internal.h:560
obs_core_data::sources_mutex
pthread_mutex_t sources_mutex
Definition: obs-internal.h:349
matrix4.h
audio_resampler_t
struct audio_resampler audio_resampler_t
Definition: audio-resampler.h:28
delay_data::packet
struct encoder_packet packet
Definition: obs-internal.h:858
obs_source::user_volume
float user_volume
Definition: obs-internal.h:637
obs_display::cx
uint32_t cx
Definition: obs-internal.h:204
obs_output::reconnect_retry_max
int reconnect_retry_max
Definition: obs-internal.h:912
obs_video_info
Definition: obs.h:152
obs_core_video::conversion_techs
const char * conversion_techs[NUM_CHANNELS]
Definition: obs-internal.h:291
async_frame::used
bool used
Definition: obs-internal.h:539
obs_source::async_gpu_conversion
bool async_gpu_conversion
Definition: obs-internal.h:647
obs_service::owns_info_id
bool owns_info_id
Definition: obs-internal.h:1124
obs_core_video::gpu_conversion
bool gpu_conversion
Definition: obs-internal.h:290
obs_source::transition_actual_cx
uint32_t transition_actual_cx
Definition: obs-internal.h:722
VIDEO_FORMAT_YUVA
@ VIDEO_FORMAT_YUVA
Definition: video-io.h:67
obs_source::transition_source_active
bool transition_source_active[2]
Definition: obs-internal.h:720
calldata::stack
uint8_t * stack
Definition: calldata.h:47
obs_source_frame
Definition: obs.h:228
obs_output::video_start_ts
uint64_t video_start_ts
Definition: obs-internal.h:939
audio_action::timestamp
uint64_t timestamp
Definition: obs-internal.h:550
obs_source::push_to_talk_enabled
bool push_to_talk_enabled
Definition: obs-internal.h:699
VIDEO_FORMAT_I40A
@ VIDEO_FORMAT_I40A
Definition: video-io.h:61
obs_core::ui_task_handler
obs_task_handler_t ui_task_handler
Definition: obs-internal.h:432
obs_transition_tick
void obs_transition_tick(obs_source_t *transition, float t)
obs_core_data::outputs_mutex
pthread_mutex_t outputs_mutex
Definition: obs-internal.h:351
obs_source::context
struct obs_context_data context
Definition: obs-internal.h:569
obs_context_data::private
bool private
Definition: obs-internal.h:476
obs_output::delay_capturing
volatile bool delay_capturing
Definition: obs-internal.h:969
obs_core_video::vframe_info_buffer
struct circlebuf vframe_info_buffer
Definition: obs-internal.h:252
obs_encoder::preferred_format
enum video_format preferred_format
Definition: obs-internal.h:1037
obs_encoder_packet_create_instance
void obs_encoder_packet_create_instance(struct encoder_packet *dst, const struct encoder_packet *src)
obs_transition_mode
obs_transition_mode
Definition: obs.h:1367
encoded_callback_t
void(* encoded_callback_t)(void *data, struct encoder_packet *packet)
Definition: obs-internal.h:861
obs_view::channels
obs_source_t * channels[MAX_CHANNELS]
Definition: obs-internal.h:192
obs_output::audio
audio_t * audio
Definition: obs-internal.h:929
audio-resampler.h
obs_output::valid
bool valid
Definition: obs-internal.h:958
obs_core_video::deinterlace_yadif_2x_effect
gs_effect_t * deinterlace_yadif_2x_effect
Definition: obs-internal.h:311
send_off_encoder_packet
void send_off_encoder_packet(obs_encoder_t *encoder, bool success, bool received, struct encoder_packet *pkt)
obs_core_data::first_encoder
struct obs_encoder * first_encoder
Definition: obs-internal.h:346
obs_monitoring_type
obs_monitoring_type
Definition: obs.h:1133
obs_core_hotkeys::sceneitem_show
char * sceneitem_show
Definition: obs-internal.h:399
obs_encoder::audio_output_buffer
uint8_t * audio_output_buffer[MAX_AV_PLANES]
Definition: obs-internal.h:1052
obs_source::deinterlace_half_duration
uint32_t deinterlace_half_duration
Definition: obs-internal.h:678
obs_get_hotkey_translation
const char * obs_get_hotkey_translation(obs_key_t key, const char *def)
obs_display::enabled
bool enabled
Definition: obs-internal.h:203
obs_core::video
struct obs_core_video video
Definition: obs-internal.h:427
obs_output::audio_start_ts
uint64_t audio_start_ts
Definition: obs-internal.h:938
obs_service::context
struct obs_context_data context
Definition: obs-internal.h:1119
signal_handler_t
struct signal_handler signal_handler_t
Definition: signal.h:35
obs_source::next_audio_sys_ts_min
uint64_t next_audio_sys_ts_min
Definition: obs-internal.h:607
add_alignment
void add_alignment(struct vec2 *v, uint32_t align, int cx, int cy)
obs_source::info
struct obs_source_info info
Definition: obs-internal.h:570
obs_core_video::lagged_frames
uint32_t lagged_frames
Definition: obs-internal.h:287
obs_context_data::signals
signal_handler_t * signals
Definition: obs-internal.h:461
obs_source::user_push_to_talk_pressed
bool user_push_to_talk_pressed
Definition: obs-internal.h:701
obs_core_hotkeys::signals
signal_handler_t * signals
Definition: obs-internal.h:392
obs_core_video::bilinear_lowres_effect
gs_effect_t * bilinear_lowres_effect
Definition: obs-internal.h:263
obs_core_video::textures_copied
bool textures_copied[NUM_TEXTURES]
Definition: obs-internal.h:249
obs_hotkey_pair::pressed1
bool pressed1
Definition: obs-internal.h:152
obs_encoder_remove_output
void obs_encoder_remove_output(struct obs_encoder *encoder, struct obs_output *output)
obs_core::module_config_path
char * module_config_path
Definition: obs-internal.h:421
obs_source::activate_refs
volatile long activate_refs
Definition: obs-internal.h:588
obs_core_data::draw_callbacks_mutex
pthread_mutex_t draw_callbacks_mutex
Definition: obs-internal.h:355
circlebuf.h
MAX_CHANNELS
#define MAX_CHANNELS
Definition: obs-defs.h:21
dstr.h
obs_output::reconnect_retries
int reconnect_retries
Definition: obs-internal.h:913
obs_core::signals
signal_handler_t * signals
Definition: obs-internal.h:417
obs_display::background_color
uint32_t background_color
Definition: obs-internal.h:205
obs_encoder_stop
void obs_encoder_stop(obs_encoder_t *encoder, void(*new_packet)(void *param, struct encoder_packet *packet), void *param)
obs_core_video::video_frame_interval_ns
uint64_t video_frame_interval_ns
Definition: obs-internal.h:281
obs_source::async_prev_texrender
gs_texrender_t * async_prev_texrender
Definition: obs-internal.h:677
encoder_callback::new_packet
void(* new_packet)(void *param, struct encoder_packet *packet)
Definition: obs-internal.h:1013
obs_tex_frame::tex_uv
gs_texture_t * tex_uv
Definition: obs-internal.h:229
obs_encoder::paused
volatile bool paused
Definition: obs-internal.h:1040
obs_output::info
struct obs_output_info info
Definition: obs-internal.h:891
obs_context_data::settings
obs_data_t * settings
Definition: obs-internal.h:460
obs_core_video::tasks
struct circlebuf tasks
Definition: obs-internal.h:316
obs_source::filter_mutex
pthread_mutex_t filter_mutex
Definition: obs-internal.h:687
obs_core_hotkeys::reroute_hotkeys
bool reroute_hotkeys
Definition: obs-internal.h:381
update_async_texture
bool update_async_texture(struct obs_source *source, const struct obs_source_frame *frame, gs_texture_t *tex, gs_texrender_t *texrender)
profiler.h
obs_tex_frame::timestamp
uint64_t timestamp
Definition: obs-internal.h:231
obs_service::control
struct obs_weak_service * control
Definition: obs-internal.h:1121
obs_source::push_to_talk_stop_time
uint64_t push_to_talk_stop_time
Definition: obs-internal.h:705
obs_encoder_shutdown
void obs_encoder_shutdown(obs_encoder_t *encoder)
obs_output::reconnect_stop_event
os_event_t * reconnect_stop_event
Definition: obs-internal.h:916
os_event_t
struct os_event_data os_event_t
Definition: threading.h:63
obs_core_data::displays_mutex
pthread_mutex_t displays_mutex
Definition: obs-internal.h:350
obs_hotkey::data
void * data
Definition: obs-internal.h:138
gs_texture_t
struct gs_texture gs_texture_t
Definition: graphics.h:266
obs_core_video::premultiplied_alpha_effect
gs_effect_t * premultiplied_alpha_effect
Definition: obs-internal.h:264
obs_context_data::next
struct obs_context_data * next
Definition: obs-internal.h:473
obs_encoder::context
struct obs_context_data context
Definition: obs-internal.h:1018
obs_hotkeys_platform_init
bool obs_hotkeys_platform_init(struct obs_core_hotkeys *hotkeys)
get_source_info2
struct obs_source_info * get_source_info2(const char *unversioned_id, uint32_t ver)
obs_output::stopping_event
os_event_t * stopping_event
Definition: obs-internal.h:906
audio_data
Definition: audio-io.h:78
NUM_TEXTURES
#define NUM_TEXTURES
Definition: obs-internal.h:39
obs_module::file
const char * file
Definition: obs-internal.h:85
obs_hotkey_active_func
bool(* obs_hotkey_active_func)(void *data, obs_hotkey_pair_id id, obs_hotkey_t *hotkey, bool pressed)
Definition: obs-hotkey.h:188
obs_output_destroy
void obs_output_destroy(obs_output_t *output)
obs_output::reconnect_thread_active
volatile bool reconnect_thread_active
Definition: obs-internal.h:918
obs_source::audio_output_buf
float * audio_output_buf[MAX_AUDIO_MIXES][MAX_AUDIO_CHANNELS]
Definition: obs-internal.h:625
c99defs.h
obs_tex_frame::released
bool released
Definition: obs-internal.h:234
obs_core_video::texture_converted
bool texture_converted
Definition: obs-internal.h:250
obs_hotkeys_platform_free
void obs_hotkeys_platform_free(struct obs_core_hotkeys *hotkeys)
obs_core_video::scale_type
enum obs_scale_type scale_type
Definition: obs-internal.h:300
obs_graphics_thread
void * obs_graphics_thread(void *param)
obs_hotkeys_platform_is_pressed
bool obs_hotkeys_platform_is_pressed(obs_hotkeys_platform_t *context, obs_key_t key)
obs_source::show_refs
volatile long show_refs
Definition: obs-internal.h:585
obs_source_init_context
bool obs_source_init_context(struct obs_source *source, obs_data_t *settings, const char *name, obs_data_t *hotkey_data, bool private)
obs_source::last_obs_ver
uint32_t last_obs_ver
Definition: obs-internal.h:576
pause_data::last_video_ts
uint64_t last_video_ts
Definition: obs-internal.h:878
obs_core_video::conversion_needed
bool conversion_needed
Definition: obs-internal.h:292
obs_output::starting_frame_count
uint32_t starting_frame_count
Definition: obs-internal.h:922
obs_context_data::rename_cache_mutex
pthread_mutex_t rename_cache_mutex
Definition: obs-internal.h:470
obs_hotkey
Definition: obs-internal.h:132
obs_source::audio_pending
bool audio_pending
Definition: obs-internal.h:614
obs_encoder::orig_info
struct obs_encoder_info orig_info
Definition: obs-internal.h:1023
circlebuf
Definition: circlebuf.h:32
obs_source::next_audio_source
struct obs_source * next_audio_source
Definition: obs-internal.h:619
obs_source::enabled
bool enabled
Definition: obs-internal.h:599
obs_source::user_push_to_mute_pressed
bool user_push_to_mute_pressed
Definition: obs-internal.h:698
obs_service_activate
void obs_service_activate(struct obs_service *service)
obs_source::transition_cx
uint32_t transition_cx
Definition: obs-internal.h:724
AUDIO_ACTION_PTT
@ AUDIO_ACTION_PTT
Definition: obs-internal.h:545
obs_source::user_muted
bool user_muted
Definition: obs-internal.h:617
obs_source::transition_matrices
struct matrix4 transition_matrices[2]
Definition: obs-internal.h:730
graphics_subsystem
Definition: graphics-internal.h:329
obs_view_init
bool obs_view_init(struct obs_view *view)
obs_hotkey_func
void(* obs_hotkey_func)(void *data, obs_hotkey_id id, obs_hotkey_t *hotkey, bool pressed)
Definition: obs-hotkey.h:156
encoder_callback::sent_first_packet
bool sent_first_packet
Definition: obs-internal.h:1012
obs_output::audio_conversion
struct audio_convert_info audio_conversion
Definition: obs-internal.h:951
get_source_info
struct obs_source_info * get_source_info(const char *id)
pause_data::ts_offset
uint64_t ts_offset
Definition: obs-internal.h:881
obs_weak_encoder::encoder
struct obs_encoder * encoder
Definition: obs-internal.h:1008
obs_encoder::framesize_bytes
size_t framesize_bytes
Definition: obs-internal.h:1031
obs_weak_ref::refs
volatile long refs
Definition: obs-internal.h:496
obs
struct obs_core * obs
obs_source::timing_adjust
volatile uint64_t timing_adjust
Definition: obs-internal.h:603
obs_output::sample_rate
size_t sample_rate
Definition: obs-internal.h:942
obs_hotkey_id
size_t obs_hotkey_id
Definition: obs-hotkey.h:24
obs_core_video::deinterlace_discard_effect
gs_effect_t * deinterlace_discard_effect
Definition: obs-internal.h:304
obs_output::audio_buffer
struct circlebuf audio_buffer[MAX_AUDIO_MIXES][MAX_AV_PLANES]
Definition: obs-internal.h:937
obs_output::audio_encoders
obs_encoder_t * audio_encoders[MAX_AUDIO_MIXES]
Definition: obs-internal.h:931
obs_source_enum_proc_t
void(* obs_source_enum_proc_t)(obs_source_t *parent, obs_source_t *child, void *param)
Definition: obs-source.h:191
obs_source::resample_offset
uint64_t resample_offset
Definition: obs-internal.h:604
obs_encoder::blocksize
size_t blocksize
Definition: obs-internal.h:1029
obs_core::name_store_owned
bool name_store_owned
Definition: obs-internal.h:422
obs_source::resampler
audio_resampler_t * resampler
Definition: obs-internal.h:628
obs_hotkey_binding
Definition: obs-internal.h:175
obs_output::video_conversion
struct video_scale_info video_conversion
Definition: obs-internal.h:950
obs_source::last_sys_timestamp
uint64_t last_sys_timestamp
Definition: obs-internal.h:609
obs_source::push_to_mute_delay
uint64_t push_to_mute_delay
Definition: obs-internal.h:702
obs_core_video::deinterlace_discard_2x_effect
gs_effect_t * deinterlace_discard_2x_effect
Definition: obs-internal.h:305
gs_samplerstate_t
struct gs_sampler_state gs_samplerstate_t
Definition: graphics.h:271
obs_hotkey_binding::hotkey
obs_hotkey_t * hotkey
Definition: obs-internal.h:181
obs_source::last_sync_offset
int64_t last_sync_offset
Definition: obs-internal.h:640
obs_core_data::first_output
struct obs_output * first_output
Definition: obs-internal.h:345
obs_core::locale
char * locale
Definition: obs-internal.h:420
obs_source::async_height
uint32_t async_height
Definition: obs-internal.h:665
obs_core_hotkeys::router_func_data
void * router_func_data
Definition: obs-internal.h:385
obs_modal_ui
Definition: obs-ui.h:40
obs_output::scaled_height
uint32_t scaled_height
Definition: obs-internal.h:946
video_pause_check
bool video_pause_check(struct pause_data *pause, uint64_t timestamp)
obs_source::async_rendered
bool async_rendered
Definition: obs-internal.h:610
profiler_name_store_t
struct profiler_name_store profiler_name_store_t
Definition: profiler.h:39
obs_source::async_unbuffered
bool async_unbuffered
Definition: obs-internal.h:658
obs_source::audio_mixers
uint32_t audio_mixers
Definition: obs-internal.h:636
obs_core_video::conversion_effect
gs_effect_t * conversion_effect
Definition: obs-internal.h:259
delay_data::ts
uint64_t ts
Definition: obs-internal.h:857
obs_transition_enum_sources
void obs_transition_enum_sources(obs_source_t *transition, obs_source_enum_proc_t enum_callback, void *param)
obs_tex_frame::tex
gs_texture_t * tex
Definition: obs-internal.h:228
obs_weak_output
Definition: obs-internal.h:863
obs_service
Definition: obs-internal.h:1118
obs_encoder::offset_usec
int64_t offset_usec
Definition: obs-internal.h:1061
obs_core_hotkeys::name_map_init_token
pthread_once_t name_map_init_token
Definition: obs-internal.h:389
obs_core_audio::monitoring_device_id
char * monitoring_device_id
Definition: obs-internal.h:337
dstr::array
char * array
Definition: dstr.h:37
obs_output::active
volatile bool active
Definition: obs-internal.h:926
obs_source::audio_input_buf
struct circlebuf audio_input_buf[MAX_AUDIO_CHANNELS]
Definition: obs-internal.h:622
obs_module::next
struct obs_module * next
Definition: obs-internal.h:102
obs_weak_service::service
struct obs_service * service
Definition: obs-internal.h:1115
obs_source::defer_update
bool defer_update
Definition: obs-internal.h:582
DELAY_MSG_PACKET
@ DELAY_MSG_PACKET
Definition: obs-internal.h:850
obs_core_data::audio_sources_mutex
pthread_mutex_t audio_sources_mutex
Definition: obs-internal.h:354
obs_core_video::texture_rendered
bool texture_rendered
Definition: obs-internal.h:248
obs_output::caption_timestamp
double caption_timestamp
Definition: obs-internal.h:954
obs_encoder::wait_for_video
bool wait_for_video
Definition: obs-internal.h:1058
obs_audio_data
Definition: obs.h:194
obs_module_path::data
char * data
Definition: obs-internal.h:109
LOG_DEBUG
@ LOG_DEBUG
Definition: base.h:65
obs_module::unload
void(* unload)(void)
Definition: obs-internal.h:92
obs_core_audio::user_volume
float user_volume
Definition: obs-internal.h:332
obs_source::filter_texrender
gs_texrender_t * filter_texrender
Definition: obs-internal.h:688
delay_data::msg
enum delay_msg msg
Definition: obs-internal.h:856
obs_core_data::first_source
struct obs_source * first_source
Definition: obs-internal.h:342
obs_core_data::DARRAY
DARRAY(struct draw_callback) draw_callbacks
obs_source::audio_mix_buf
float * audio_mix_buf[MAX_AUDIO_CHANNELS]
Definition: obs-internal.h:626
obs_source::default_flags
uint32_t default_flags
Definition: obs-internal.h:575
obs_encoder_initialize
bool obs_encoder_initialize(obs_encoder_t *encoder)
obs_weak_source
Definition: obs-internal.h:558
obs_output::received_video
bool received_video
Definition: obs-internal.h:897
obs_encoder::DARRAY
DARRAY(obs_output_t *) outputs
obs_source::deinterlace_effect
gs_effect_t * deinterlace_effect
Definition: obs-internal.h:674
obs_output::delay_mutex
pthread_mutex_t delay_mutex
Definition: obs-internal.h:963
encoder_packet::timebase_den
int32_t timebase_den
Definition: obs-encoder.h:52
obs_transition_save
void obs_transition_save(obs_source_t *source, obs_data_t *data)
obs_source::sample_info
struct resample_info sample_info
Definition: obs-internal.h:627
obs_encoder::first_raw_ts
uint64_t first_raw_ts
Definition: obs-internal.h:1062
obs_source::timing_set
volatile bool timing_set
Definition: obs-internal.h:602
obs_service_info
Definition: obs-service.h:31
VIDEO_FORMAT_I42A
@ VIDEO_FORMAT_I42A
Definition: video-io.h:64
obs_output::paused
volatile bool paused
Definition: obs-internal.h:927
obs_core_video::lanczos_effect
gs_effect_t * lanczos_effect
Definition: obs-internal.h:261
obs_tex_frame::lock_key
uint64_t lock_key
Definition: obs-internal.h:232
obs_encoder::mixer_idx
size_t mixer_idx
Definition: obs-internal.h:1033
obs_source::removed
bool removed
Definition: obs-internal.h:593
obs_tex_frame
Definition: obs-internal.h:227
obs_core
Definition: obs-internal.h:403
obs_weak_ref::weak_refs
volatile long weak_refs
Definition: obs-internal.h:497
obs_source::push_to_mute_enabled
bool push_to_mute_enabled
Definition: obs-internal.h:696
signal.h
obs_output_actual_start
bool obs_output_actual_start(obs_output_t *output)
obs_context_data::prev_next
struct obs_context_data ** prev_next
Definition: obs-internal.h:474
audio_pause_check
bool audio_pause_check(struct pause_data *pause, struct audio_data *data, size_t sample_rate)
obs_hotkey_thread
void * obs_hotkey_thread(void *param)
obs_encoder::cur_pts
int64_t cur_pts
Definition: obs-internal.h:1049
obs_source::push_to_mute_pressed
bool push_to_mute_pressed
Definition: obs-internal.h:697
vec2
Definition: vec2.h:27
obs_core_data::valid
volatile bool valid
Definition: obs-internal.h:365
obs_encoder::initialized
bool initialized
Definition: obs-internal.h:1041
obs_core_hotkeys::DARRAY
DARRAY(obs_hotkey_t) hotkeys
tick_callback::param
void * param
Definition: obs-internal.h:52
obs_module::set_pointer
void(* set_pointer)(obs_module_t *module)
Definition: obs-internal.h:97
obs_context_data::DARRAY
DARRAY(obs_hotkey_id) hotkeys
obs_source::monitor
struct audio_monitor * monitor
Definition: obs-internal.h:732
obs_module_path
Definition: obs-internal.h:107
start_raw_video
void start_raw_video(video_t *video, const struct video_scale_info *conversion, void(*callback)(void *param, struct video_data *frame), void *param)
obs_encoder_add_output
void obs_encoder_add_output(struct obs_encoder *encoder, struct obs_output *output)
caption_text::next
struct caption_text * next
Definition: obs-internal.h:873
obs_core_video::transparent_texture
gs_texture_t * transparent_texture
Definition: obs-internal.h:302
obs_task_handler_t
void(* obs_task_handler_t)(obs_task_t task, void *param, bool wait)
Definition: obs.h:758
obs_core_video::using_nv12_tex
bool using_nv12_tex
Definition: obs-internal.h:251
obs_source::transition_cy
uint32_t transition_cy
Definition: obs-internal.h:725
obs_core_hotkeys
Definition: obs-internal.h:369
obs_core_video::video_fps
double video_fps
Definition: obs-internal.h:283
success
#define success(stat, call)
Definition: mac-helpers.h:13
platform.h
obs_core_video::cur_texture
int cur_texture
Definition: obs-internal.h:267
obs_source::async_flip
bool async_flip
Definition: obs-internal.h:655
obs_key_combination
Definition: obs-hotkey.h:45
obs_core_video::gpu_encode_stop
volatile bool gpu_encode_stop
Definition: obs-internal.h:278
obs_core_hotkeys::name_map
struct obs_hotkey_name_map * name_map
Definition: obs-internal.h:390
obs_source::showing
bool showing
Definition: obs-internal.h:596
CAPTION_LINE_BYTES
#define CAPTION_LINE_BYTES
Definition: obs-internal.h:869
obs.h
obs_display::prev_next
struct obs_display ** prev_next
Definition: obs-internal.h:212
obs_source::volume
float volume
Definition: obs-internal.h:638
obs_output_remove_encoder
void obs_output_remove_encoder(struct obs_output *output, struct obs_encoder *encoder)
obs_source::async_cache_format
enum video_format async_cache_format
Definition: obs-internal.h:650
obs_output::pause
struct pause_data pause
Definition: obs-internal.h:935
obs_source::audio_mutex
pthread_mutex_t audio_mutex
Definition: obs-internal.h:631
obs_core_hotkeys::hotkey_thread
pthread_t hotkey_thread
Definition: obs-internal.h:376
obs_source::prev_async_frame
struct obs_source_frame * prev_async_frame
Definition: obs-internal.h:675
obs_core_video::gpu_encode_thread_initialized
bool gpu_encode_thread_initialized
Definition: obs-internal.h:277
obs_source_activate
void obs_source_activate(obs_source_t *source, enum view_type type)
obs_hotkey_pair::func
obs_hotkey_active_func func[2]
Definition: obs-internal.h:150
async_frame::frame
struct obs_source_frame * frame
Definition: obs-internal.h:537
obs_core_video::thread_initialized
bool thread_initialized
Definition: obs-internal.h:288
pause_data
Definition: obs-internal.h:876
obs_core_video::deinterlace_linear_2x_effect
gs_effect_t * deinterlace_linear_2x_effect
Definition: obs-internal.h:307
obs_core_video::vframe_info_buffer_gpu
struct circlebuf vframe_info_buffer_gpu
Definition: obs-internal.h:253
draw_callback::draw
void(* draw)(void *param, uint32_t cx, uint32_t cy)
Definition: obs-internal.h:56
obs_core::hotkeys
struct obs_core_hotkeys hotkeys
Definition: obs-internal.h:430
signal_handler_signal
EXPORT void signal_handler_signal(signal_handler_t *handler, const char *signal, calldata_t *params)
audio-io.h
AUX_VIEW
@ AUX_VIEW
Definition: obs-internal.h:767
obs_core_video::deinterlace_yadif_effect
gs_effect_t * deinterlace_yadif_effect
Definition: obs-internal.h:310
obs_source::async_texture_formats
enum gs_color_format async_texture_formats[MAX_AV_PLANES]
Definition: obs-internal.h:652
obs_output::video_encoder
obs_encoder_t * video_encoder
Definition: obs-internal.h:930
obs_task_info
Definition: obs-internal.h:237
process_delay
void process_delay(void *data, struct encoder_packet *packet)
resample_info
Definition: audio-resampler.h:30
obs_encoder::timebase_num
uint32_t timebase_num
Definition: obs-internal.h:1046
obs_source::async_cache_height
uint32_t async_cache_height
Definition: obs-internal.h:667
obs_core_audio::total_buffering_ticks
int total_buffering_ticks
Definition: obs-internal.h:330
obs_output::scaled_width
uint32_t scaled_width
Definition: obs-internal.h:945
obs_hotkey::registerer
void * registerer
Definition: obs-internal.h:142
proc_handler_t
struct proc_handler proc_handler_t
Definition: proc.h:36
GS_RGBA
@ GS_RGBA
Definition: graphics.h:60
threading.h
draw_callback
Definition: obs-internal.h:55
proc.h
DELAY_MSG_STOP
@ DELAY_MSG_STOP
Definition: obs-internal.h:852
obs_encoder::framesize
size_t framesize
Definition: obs-internal.h:1030
audio_monitor_destroy
void audio_monitor_destroy(struct audio_monitor *monitor)
obs_output::last_error_message
char * last_error_message
Definition: obs-internal.h:971
obs_core_video::gpu_encode_inactive
os_event_t * gpu_encode_inactive
Definition: obs-internal.h:275
encoder_packet
Definition: obs-encoder.h:44
obs_source::last_frame_ts
uint64_t last_frame_ts
Definition: obs-internal.h:608
obs_module::load
bool(* load)(void)
Definition: obs-internal.h:91
obs_context_data_insert
void obs_context_data_insert(struct obs_context_data *context, pthread_mutex_t *mutex, void *first)
NUM_CHANNELS
#define NUM_CHANNELS
Definition: obs-internal.h:40
obs_source::async_preload_frame
struct obs_source_frame * async_preload_frame
Definition: obs-internal.h:660
obs_output::caption_mutex
pthread_mutex_t caption_mutex
Definition: obs-internal.h:953
obs_source::push_to_talk_pressed
bool push_to_talk_pressed
Definition: obs-internal.h:700
pause_data::ts_end
uint64_t ts_end
Definition: obs-internal.h:880
obs_core_video::graphics
graphics_t * graphics
Definition: obs-internal.h:243
obs_transition_load
void obs_transition_load(obs_source_t *source, obs_data_t *data)
obs_source::async_convert_width
uint32_t async_convert_width[MAX_AV_PLANES]
Definition: obs-internal.h:668
obs_core_data
Definition: obs-internal.h:341
obs_core_data::first_display
struct obs_display * first_display
Definition: obs-internal.h:344
MAX_AUDIO_MIXES
#define MAX_AUDIO_MIXES
Definition: audio-io.h:28
obs_source::muted
bool muted
Definition: obs-internal.h:618
dstr_copy
EXPORT void dstr_copy(struct dstr *dst, const char *array)
audio_action::set
bool set
Definition: obs-internal.h:554
tick_callback
Definition: obs-internal.h:50
obs_weak_source::ref
struct obs_weak_ref ref
Definition: obs-internal.h:559
obs_output
Definition: obs-internal.h:889
pause_data::ts_start
uint64_t ts_start
Definition: obs-internal.h:879
obs_source_video_tick
void obs_source_video_tick(obs_source_t *source, float seconds)
obs_module::set_locale
void(* set_locale)(const char *locale)
Definition: obs-internal.h:94
obs_source::active
bool active
Definition: obs-internal.h:595
obs_core_hotkeys::router_func
obs_hotkey_callback_router_func router_func
Definition: obs-internal.h:384
obs_source_info::unversioned_id
const char * unversioned_id
Definition: obs-source.h:529
deinterlace_process_last_frame
void deinterlace_process_last_frame(obs_source_t *source, uint64_t sys_time)
obs_weak_output::ref
struct obs_weak_ref ref
Definition: obs-internal.h:864
obs_core_data::first_audio_source
struct obs_source * first_audio_source
Definition: obs-internal.h:343
obs_allow_direct_render
obs_allow_direct_render
Definition: obs.h:109
obs_output::audio_offsets
int64_t audio_offsets[MAX_AUDIO_MIXES]
Definition: obs-internal.h:902
obs_display::cy
uint32_t cy
Definition: obs-internal.h:204
obs_source::async_mutex
pthread_mutex_t async_mutex
Definition: obs-internal.h:663
obs_source::async_rotation
long async_rotation
Definition: obs-internal.h:654
obs_context_data::type
enum obs_obj_type type
Definition: obs-internal.h:463
obs_display::next
struct obs_display * next
Definition: obs-internal.h:211
async_frame
Definition: obs-internal.h:536
obs_output::reconnect_retry_cur_sec
int reconnect_retry_cur_sec
Definition: obs-internal.h:914
obs_source::mute_unmute_key
obs_hotkey_pair_id mute_unmute_key
Definition: obs-internal.h:693
obs_core_audio::audio
audio_t * audio
Definition: obs-internal.h:322
obs_encoder
Definition: obs-internal.h:1017
obs_core_hotkeys::next_id
obs_hotkey_id next_id
Definition: obs-internal.h:372
obs_output::video_conversion_set
bool video_conversion_set
Definition: obs-internal.h:948
video_data
Definition: video-io.h:86
obs_core_video::base_width
uint32_t base_width
Definition: obs-internal.h:297
obs_core_video
Definition: obs-internal.h:242
obs_core_audio::buffered_ts
uint64_t buffered_ts
Definition: obs-internal.h:327
obs_core_video::gpu_encoder_avail_queue
struct circlebuf gpu_encoder_avail_queue
Definition: obs-internal.h:272
obs_service::active
bool active
Definition: obs-internal.h:1126
audio_callback
bool audio_callback(void *param, uint64_t start_ts_in, uint64_t end_ts_in, uint64_t *out_ts, uint32_t mixers, struct audio_output_data *mixes)
obs_core_video::area_effect
gs_effect_t * area_effect
Definition: obs-internal.h:262
DELAY_MSG_START
@ DELAY_MSG_START
Definition: obs-internal.h:851
obs_service_deactivate
void obs_service_deactivate(struct obs_service *service, bool remove)
VIDEO_FORMAT_AYUV
@ VIDEO_FORMAT_AYUV
Definition: video-io.h:70
obs_source::sync_offset
int64_t sync_offset
Definition: obs-internal.h:639
obs_core_hotkeys::push_to_talk
char * push_to_talk
Definition: obs-internal.h:398
obs_source::last_audio_input_buf_size
size_t last_audio_input_buf_size
Definition: obs-internal.h:623
obs_output::audio_size
size_t audio_size
Definition: obs-internal.h:940
stop_gpu_encode
void stop_gpu_encode(obs_encoder_t *encoder)
obs_encoder::audio_input_buffer
struct circlebuf audio_input_buffer[MAX_AV_PLANES]
Definition: obs-internal.h:1051
obs_source::pending_stop
bool pending_stop
Definition: obs-internal.h:615
video_format
video_format
Definition: video-io.h:33
obs_source::transition_tex_mutex
pthread_mutex_t transition_tex_mutex
Definition: obs-internal.h:710
obs_context_data::name
char * name
Definition: obs-internal.h:458
start_gpu_encode
bool start_gpu_encode(obs_encoder_t *encoder)
gs_texrender_t
struct gs_texture_render gs_texrender_t
Definition: graphics.h:275
os_file_exists
EXPORT bool os_file_exists(const char *path)
darray.h
os_sem_t
struct os_sem_data os_sem_t
Definition: threading.h:64
audio_t
struct audio_output audio_t
Definition: audio-io.h:42
obs_task_info::param
void * param
Definition: obs-internal.h:239
obs_weak_encoder::ref
struct obs_weak_ref ref
Definition: obs-internal.h:1007
obs_hotkey::id
obs_hotkey_id id
Definition: obs-internal.h:133
audio_action::vol
float vol
Definition: obs-internal.h:553
obs_source::transition_mutex
pthread_mutex_t transition_mutex
Definition: obs-internal.h:712
obs_core_hotkeys::stop_event
os_event_t * stop_event
Definition: obs-internal.h:378
obs_modeless_ui
Definition: obs-ui.h:84
obs_output::DARRAY
DARRAY(struct encoder_packet) interleaved_packets
video_t
struct video_output video_t
Definition: video-io.h:31
obs_weak_service::ref
struct obs_weak_ref ref
Definition: obs-internal.h:1114
obs_output::service
obs_service_t * service
Definition: obs-internal.h:932
audio_cb_info::callback
obs_source_audio_capture_t callback
Definition: obs-internal.h:564
obs_core_audio::buffered_timestamps
struct circlebuf buffered_timestamps
Definition: obs-internal.h:328
gs_swapchain_t
struct gs_swap_chain gs_swapchain_t
Definition: graphics.h:272
obs_output_delay_stop
void obs_output_delay_stop(obs_output_t *output)
obs_source::transition_actual_cy
uint32_t transition_actual_cy
Definition: obs-internal.h:723
audio_action_type
audio_action_type
Definition: obs-internal.h:542
MAX_AV_PLANES
#define MAX_AV_PLANES
Definition: media-io-defs.h:20
MAX_AUDIO_CHANNELS
#define MAX_AUDIO_CHANNELS
Definition: audio-io.h:29
encoder_frame
Definition: obs-encoder.h:91
obs_context_data::procs
proc_handler_t * procs
Definition: obs-internal.h:462
obs_encoder::init_mutex
pthread_mutex_t init_mutex
Definition: obs-internal.h:1025
obs_encoder::paired_encoder
struct obs_encoder * paired_encoder
Definition: obs-internal.h:1060
obs_output::active_delay_ns
uint64_t active_delay_ns
Definition: obs-internal.h:960
calldata::size
size_t size
Definition: calldata.h:48
obs_core_video::base_height
uint32_t base_height
Definition: obs-internal.h:298
pause_data::mutex
pthread_mutex_t mutex
Definition: obs-internal.h:877
obs_source::transition_fixed_duration
uint32_t transition_fixed_duration
Definition: obs-internal.h:726
obs_core_video::task_mutex
pthread_mutex_t task_mutex
Definition: obs-internal.h:315
encoder_callback
Definition: obs-internal.h:1011
obs_output::interleaved_mutex
pthread_mutex_t interleaved_mutex
Definition: obs-internal.h:907
obs_hotkey_name_map_free
void obs_hotkey_name_map_free(void)
video_scale_info
Definition: video-io.h:213
obs_output_cleanup_delay
void obs_output_cleanup_delay(obs_output_t *output)
obs_load_effect
gs_effect_t * obs_load_effect(gs_effect_t **effect, const char *file)
obs_source::audio_ts
uint64_t audio_ts
Definition: obs-internal.h:621
obs_encoder_destroy
void obs_encoder_destroy(obs_encoder_t *encoder)
obs_core_video::gpu_encoder_queue
struct circlebuf gpu_encoder_queue
Definition: obs-internal.h:271
dstr
Definition: dstr.h:36
obs_encoder::last_error_message
char * last_error_message
Definition: obs-internal.h:1079
obs_source::next_audio_ts_min
uint64_t next_audio_ts_min
Definition: obs-internal.h:606
obs_context_data_setname
void obs_context_data_setname(struct obs_context_data *context, const char *name)
obs_source_create_set_last_ver
obs_source_t * obs_source_create_set_last_ver(const char *id, const char *name, obs_data_t *settings, obs_data_t *hotkey_data, uint32_t last_obs_ver)
obs_view::channels_mutex
pthread_mutex_t channels_mutex
Definition: obs-internal.h:191
obs_output::delay_restart_refs
volatile long delay_restart_refs
Definition: obs-internal.h:967
deinterlace_render
void deinterlace_render(obs_source_t *s)
obs_module::free_locale
void(* free_locale)(void)
Definition: obs-internal.h:95
obs_output::caption_tail
struct caption_text * caption_tail
Definition: obs-internal.h:956
obs_weak_encoder
Definition: obs-internal.h:1006
obs_source::audio_cb_mutex
pthread_mutex_t audio_cb_mutex
Definition: obs-internal.h:632
obs_source::async_channel_count
int async_channel_count
Definition: obs-internal.h:653
obs_source::push_to_mute_stop_time
uint64_t push_to_mute_stop_time
Definition: obs-internal.h:703
obs_hotkey_binding::key
obs_key_combination_t key
Definition: obs-internal.h:176
delay_data
Definition: obs-internal.h:855
obs_core_hotkeys::platform_context
obs_hotkeys_platform_t * platform_context
Definition: obs-internal.h:387
obs_core_video::render_texture
gs_texture_t * render_texture
Definition: obs-internal.h:245
obs_output::highest_audio_ts
int64_t highest_audio_ts
Definition: obs-internal.h:903
caption_text::text
char text[CAPTION_LINE_BYTES+1]
Definition: obs-internal.h:871
obs_source::async_cache_full_range
bool async_cache_full_range
Definition: obs-internal.h:651
obs_source::deinterlace_rendered
bool deinterlace_rendered
Definition: obs-internal.h:681
obs_source::prev_next_audio_source
struct obs_source ** prev_next_audio_source
Definition: obs-internal.h:620
GS_BGRX
@ GS_BGRX
Definition: graphics.h:61
obs_source::last_audio_ts
uint64_t last_audio_ts
Definition: obs-internal.h:605
obs_source::async_active
bool async_active
Definition: obs-internal.h:656
MAX_TS_VAR
#define MAX_TS_VAR
Definition: obs-internal.h:787
obs_service_destroy
void obs_service_destroy(obs_service_t *service)
obs_hotkey::func
obs_hotkey_func func
Definition: obs-internal.h:137
obs_core_video::DARRAY
DARRAY(obs_encoder_t *) gpu_encoders
obs_source::transitioning_audio
bool transitioning_audio
Definition: obs-internal.h:719
obs_hotkeys_free
void obs_hotkeys_free(void)
obs_source::deinterlace_frame_ts
uint64_t deinterlace_frame_ts
Definition: obs-internal.h:673
obs_source::transition_duration
uint64_t transition_duration
Definition: obs-internal.h:709
obs_transition_scale_type
obs_transition_scale_type
Definition: obs.h:1382
obs_output::total_audio_frames
size_t total_audio_frames
Definition: obs-internal.h:943
obs_context_data::hotkey_data
obs_data_t * hotkey_data
Definition: obs-internal.h:467
obs_core_video::deinterlace_blend_effect
gs_effect_t * deinterlace_blend_effect
Definition: obs-internal.h:308
obs_core::name_store
profiler_name_store_t * name_store
Definition: obs-internal.h:423
obs_hotkey_callback_router_func
void(* obs_hotkey_callback_router_func)(void *data, obs_hotkey_id id, bool pressed)
Definition: obs-hotkey.h:284
find_encoder
struct obs_encoder_info * find_encoder(const char *id)
obs_core_video::output_width
uint32_t output_width
Definition: obs-internal.h:295
obs_output::starting_lagged_count
uint32_t starting_lagged_count
Definition: obs-internal.h:921
obs_source::deinterlace_mode
enum obs_deinterlace_mode deinterlace_mode
Definition: obs-internal.h:679
obs_source::push_to_mute_key
obs_hotkey_id push_to_mute_key
Definition: obs-internal.h:694
obs_output::reconnect_thread
pthread_t reconnect_thread
Definition: obs-internal.h:915
obs_core_hotkeys::thread_disable_press
bool thread_disable_press
Definition: obs-internal.h:379
obs_output::caption_head
struct caption_text * caption_head
Definition: obs-internal.h:955
obs_core_video::video_avg_frame_time_ns
uint64_t video_avg_frame_time_ns
Definition: obs-internal.h:282
deinterlace_update_async_video
void deinterlace_update_async_video(obs_source_t *source)
obs_source_audio_capture_t
void(* obs_source_audio_capture_t)(void *param, obs_source_t *source, const struct audio_data *audio_data, bool muted)
Definition: obs.h:1098
VIDEO_FORMAT_RGBA
@ VIDEO_FORMAT_RGBA
Definition: video-io.h:46
obs_core_video::video_thread
pthread_t video_thread
Definition: obs-internal.h:285
obs_source::async_decoupled
bool async_decoupled
Definition: obs-internal.h:659
obs_source::monitoring_type
enum obs_monitoring_type monitoring_type
Definition: obs-internal.h:733
obs_output::received_audio
bool received_audio
Definition: obs-internal.h:898
AUDIO_ACTION_MUTE
@ AUDIO_ACTION_MUTE
Definition: obs-internal.h:544
obs_core_audio
Definition: obs-internal.h:321
obs_weak_service
Definition: obs-internal.h:1113
obs_output::end_data_capture_thread_active
volatile bool end_data_capture_thread_active
Definition: obs-internal.h:900
obs_source::async_cache_width
uint32_t async_cache_width
Definition: obs-internal.h:666
obs_core::first_module
struct obs_module * first_module
Definition: obs-internal.h:404
obs_source::async_update_texture
bool async_update_texture
Definition: obs-internal.h:657
obs_source::transition_manual_target
float transition_manual_target
Definition: obs-internal.h:716
obs_module::bin_path
char * bin_path
Definition: obs-internal.h:86
obs_source::audio_buf_mutex
pthread_mutex_t audio_buf_mutex
Definition: obs-internal.h:630
obs_core_hotkeys::mute
char * mute
Definition: obs-internal.h:395
delay_msg
delay_msg
Definition: obs-internal.h:849
obs_core_audio::monitoring_device_name
char * monitoring_device_name
Definition: obs-internal.h:336
tick_callback::tick
void(* tick)(void *param, float seconds)
Definition: obs-internal.h:51
obs_tex_frame::handle
uint32_t handle
Definition: obs-internal.h:230
obs_core_video::ovi
struct obs_video_info ovi
Definition: obs-internal.h:313
obs_encoder::start_ts
uint64_t start_ts
Definition: obs-internal.h:1063
obs_source::async_full_range
bool async_full_range
Definition: obs-internal.h:649
caption_text
Definition: obs-internal.h:870
obs_context_data::data
void * data
Definition: obs-internal.h:459
obs_core_video::video_time
uint64_t video_time
Definition: obs-internal.h:280
obs_weak_output::output
struct obs_output * output
Definition: obs-internal.h:865
view_type
view_type
Definition: obs-internal.h:765
encoder_packet::dts
int64_t dts
Definition: obs-encoder.h:49
obs_hotkey_pair
Definition: obs-internal.h:147
free_module
void free_module(struct obs_module *mod)
obs_module::mod_name
char * mod_name
Definition: obs-internal.h:84
obs_core_hotkeys::next_pair_id
obs_hotkey_pair_id next_pair_id
Definition: obs-internal.h:374
obs_encoder::callbacks_mutex
pthread_mutex_t callbacks_mutex
Definition: obs-internal.h:1073
obs_hotkey_binding::pressed
bool pressed
Definition: obs-internal.h:177
obs_encoder::destroy_on_stop
bool destroy_on_stop
Definition: obs-internal.h:1068
obs_core_video::output_height
uint32_t output_height
Definition: obs-internal.h:296
obs_source::async_textures
gs_texture_t * async_textures[MAX_AV_PLANES]
Definition: obs-internal.h:644
obs_output::owns_info_id
bool owns_info_id
Definition: obs-internal.h:895
obs_core_video::point_sampler
gs_samplerstate_t * point_sampler
Definition: obs-internal.h:265
obs_display::DARRAY
DARRAY(struct draw_callback) draw_callbacks
obs_output::highest_video_ts
int64_t highest_video_ts
Definition: obs-internal.h:904
obs_source::allow_direct
enum obs_allow_direct_render allow_direct
Definition: obs-internal.h:689
obs_core_data::unnamed_index
long long unnamed_index
Definition: obs-internal.h:361
obs_core_audio::buffering_wait_ticks
int buffering_wait_ticks
Definition: obs-internal.h:329
obs_core_hotkeys::translations
char * translations[OBS_KEY_LAST_VALUE]
Definition: obs-internal.h:394
obs_source::async_texrender
gs_texrender_t * async_texrender
Definition: obs-internal.h:645