1
0

reference-frontend-api.rst 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974
  1. OBS Studio Frontend API
  2. =======================
  3. The OBS Studio frontend API is the API specific to OBS Studio itself.
  4. .. code:: cpp
  5. #include <obs-frontend-api.h>
  6. Structures/Enumerations
  7. -----------------------
  8. .. enum:: obs_frontend_event
  9. Specifies a front-end event. Can be one of the following values:
  10. - **OBS_FRONTEND_EVENT_STREAMING_STARTING**
  11. Triggered when streaming is starting.
  12. - **OBS_FRONTEND_EVENT_STREAMING_STARTED**
  13. Triggered when streaming has successfully started.
  14. - **OBS_FRONTEND_EVENT_STREAMING_STOPPING**
  15. Triggered when streaming is stopping.
  16. - **OBS_FRONTEND_EVENT_STREAMING_STOPPED**
  17. Triggered when streaming has fully stopped.
  18. - **OBS_FRONTEND_EVENT_RECORDING_STARTING**
  19. Triggered when recording is starting.
  20. - **OBS_FRONTEND_EVENT_RECORDING_STARTED**
  21. Triggered when recording has successfully started.
  22. - **OBS_FRONTEND_EVENT_RECORDING_STOPPING**
  23. Triggered when recording is stopping.
  24. - **OBS_FRONTEND_EVENT_RECORDING_STOPPED**
  25. Triggered when recording has fully stopped.
  26. - **OBS_FRONTEND_EVENT_RECORDING_PAUSED**
  27. Triggered when the recording has been paused.
  28. - **OBS_FRONTEND_EVENT_RECORDING_UNPAUSED**
  29. Triggered when the recording has been unpaused.
  30. - **OBS_FRONTEND_EVENT_SCENE_CHANGED**
  31. Triggered when the current scene has changed.
  32. - **OBS_FRONTEND_EVENT_SCENE_LIST_CHANGED**
  33. Triggered when a scenes has been added/removed/reordered by the
  34. user.
  35. - **OBS_FRONTEND_EVENT_TRANSITION_CHANGED**
  36. Triggered when the current transition has changed by the user.
  37. - **OBS_FRONTEND_EVENT_TRANSITION_STOPPED**
  38. Triggered when a transition has completed.
  39. - **OBS_FRONTEND_EVENT_TRANSITION_LIST_CHANGED**
  40. Triggered when the user adds/removes transitions.
  41. - **OBS_FRONTEND_EVENT_TRANSITION_DURATION_CHANGED**
  42. Triggered when the transition duration has been changed by the
  43. user.
  44. - **OBS_FRONTEND_EVENT_TBAR_VALUE_CHANGED**
  45. Triggered when the transition bar is moved.
  46. - **OBS_FRONTEND_EVENT_SCENE_COLLECTION_CHANGING**
  47. Triggered when the current scene collection is about to change.
  48. - **OBS_FRONTEND_EVENT_SCENE_COLLECTION_CHANGED**
  49. Triggered when the current scene collection has changed.
  50. - **OBS_FRONTEND_EVENT_SCENE_COLLECTION_LIST_CHANGED**
  51. Triggered when a scene collection has been added or removed.
  52. - **OBS_FRONTEND_EVENT_SCENE_COLLECTION_RENAMED**
  53. Triggered when a scene collection has been renamed.
  54. - **OBS_FRONTEND_EVENT_PROFILE_CHANGING**
  55. Triggered when the current profile is about to change.
  56. - **OBS_FRONTEND_EVENT_PROFILE_CHANGED**
  57. Triggered when the current profile has changed.
  58. - **OBS_FRONTEND_EVENT_PROFILE_LIST_CHANGED**
  59. Triggered when a profile has been added or removed.
  60. - **OBS_FRONTEND_EVENT_PROFILE_RENAMED**
  61. Triggered when a profile has been renamed.
  62. - **OBS_FRONTEND_EVENT_FINISHED_LOADING**
  63. Triggered when the program has finished loading.
  64. - **OBS_FRONTEND_EVENT_SCRIPTING_SHUTDOWN**
  65. Triggered when scripts need to know that OBS is exiting. The
  66. **OBS_FRONTEND_EVENT_EXIT** event is normally called after scripts
  67. have been destroyed.
  68. - **OBS_FRONTEND_EVENT_EXIT**
  69. Triggered when the program is about to exit. This is the last chance
  70. to call any frontend API functions for any saving / cleanup / etc.
  71. After returning from this event callback, it is not permitted to make
  72. any further frontend API calls.
  73. - **OBS_FRONTEND_EVENT_REPLAY_BUFFER_STARTING**
  74. Triggered when the replay buffer is starting.
  75. - **OBS_FRONTEND_EVENT_REPLAY_BUFFER_STARTED**
  76. Triggered when the replay buffer has successfully started.
  77. - **OBS_FRONTEND_EVENT_REPLAY_BUFFER_STOPPING**
  78. Triggered when the replay buffer is stopping.
  79. - **OBS_FRONTEND_EVENT_REPLAY_BUFFER_STOPPED**
  80. Triggered when the replay buffer has fully stopped.
  81. - **OBS_FRONTEND_EVENT_REPLAY_BUFFER_SAVED**
  82. Triggered when the replay buffer has been saved.
  83. - **OBS_FRONTEND_EVENT_STUDIO_MODE_ENABLED**
  84. Triggered when the user has turned on studio mode.
  85. - **OBS_FRONTEND_EVENT_STUDIO_MODE_DISABLED**
  86. Triggered when the user has turned off studio mode.
  87. - **OBS_FRONTEND_EVENT_PREVIEW_SCENE_CHANGED**
  88. Triggered when the current preview scene has changed in studio
  89. mode.
  90. - **OBS_FRONTEND_EVENT_SCENE_COLLECTION_CLEANUP**
  91. Triggered when a scene collection has been completely unloaded, and
  92. the program is either about to load a new scene collection, or the
  93. program is about to exit.
  94. - **OBS_FRONTEND_EVENT_VIRTUALCAM_STARTED**
  95. Triggered when the virtual camera is started.
  96. - **OBS_FRONTEND_EVENT_VIRTUALCAM_STOPPED**
  97. Triggered when the virtual camera is stopped.
  98. - **OBS_FRONTEND_EVENT_THEME_CHANGED**
  99. Triggered when the theme is changed.
  100. .. versionadded:: 29.0.0
  101. - **OBS_FRONTEND_EVENT_SCREENSHOT_TAKEN**
  102. Triggered when a screenshot is taken.
  103. .. versionadded:: 29.0.0
  104. .. struct:: obs_frontend_source_list
  105. - DARRAY(obs_source_t*) **sources**
  106. Example usage:
  107. .. code:: cpp
  108. struct obs_frontend_source_list scenes = {0};
  109. obs_frontend_get_scenes(&scenes);
  110. for (size_t i = 0; i < scenes.sources.num; i++) {
  111. /* Do NOT call `obs_source_release` or `obs_scene_release`
  112. * on these sources
  113. */
  114. obs_source_t *source = scenes.sources.array[i];
  115. /* Convert to obs_scene_t if needed */
  116. obs_scene_t *scene = obs_scene_from_source(source);
  117. [...]
  118. }
  119. obs_frontend_source_list_free(&scenes);
  120. .. type:: void (*obs_frontend_cb)(void *private_data)
  121. Frontend tool menu callback
  122. .. type:: void (*obs_frontend_event_cb)(enum obs_frontend_event event, void *private_data)
  123. Frontend event callback
  124. .. type:: void (*obs_frontend_save_cb)(obs_data_t *save_data, bool saving, void *private_data)
  125. Frontend save/load callback
  126. .. type:: bool (*obs_frontend_translate_ui_cb)(const char *text, const char **out)
  127. Translation callback
  128. .. type:: void (*undo_redo_cb)(const char *data)
  129. Undo redo callback
  130. Functions
  131. ---------
  132. .. function:: void obs_frontend_source_list_free(struct obs_frontend_source_list *source_list)
  133. Releases sources within a source list and frees the list.
  134. :param source_list: Source list to free
  135. ---------------------------------------
  136. .. function:: void *obs_frontend_get_main_window(void)
  137. :return: The QMainWindow pointer to the OBS Studio window
  138. ---------------------------------------
  139. .. function:: void *obs_frontend_get_main_window_handle(void)
  140. :return: The native window handle of the OBS Studio window
  141. ---------------------------------------
  142. .. function:: char **obs_frontend_get_scene_names(void)
  143. :return: The scene name list, ending with NULL. The list is stored
  144. within one contiguous segment of memory, so freeing the
  145. returned pointer with :c:func:`bfree()` will free the entire
  146. list. The order is same as the way the frontend displays it in
  147. the Scenes dock.
  148. ---------------------------------------
  149. .. function:: void obs_frontend_get_scenes(struct obs_frontend_source_list *sources)
  150. Populates ``sources`` with reference-incremented scenes in the same order as
  151. the frontend displays it in the Scenes dock. Release with
  152. :c:func:`obs_frontend_source_list_free`, which will automatically release all
  153. scenes with :c:func:`obs_source_release`. Do not release a scene manually to
  154. prevent double releasing, which may cause scenes to be deleted.
  155. Use :c:func:`obs_scene_from_source` to access a source from the list as an
  156. :c:type:`obs_scene_t` object.
  157. If you wish to keep a reference to a certain scene, use
  158. :c:func:`obs_source_get_ref` or :c:func:`obs_scene_get_ref` on that scene and
  159. release it with either :c:func:`obs_source_release` or
  160. :c:func:`obs_scene_release`. Use only one release function, as both releases
  161. the same object.
  162. :param sources: Pointer to a :c:type:`obs_frontend_source_list`
  163. structure to receive the list of reference-incremented
  164. scenes.
  165. ---------------------------------------
  166. .. function:: obs_source_t *obs_frontend_get_current_scene(void)
  167. :return: A new reference to the currently active scene. Release with
  168. :c:func:`obs_source_release()`.
  169. ---------------------------------------
  170. .. function:: void obs_frontend_set_current_scene(obs_source_t *scene)
  171. :param scene: The scene to set as the current scene
  172. ---------------------------------------
  173. .. function:: void obs_frontend_get_transitions(struct obs_frontend_source_list *sources)
  174. :param sources: Pointer to a :c:type:`obs_frontend_source_list`
  175. structure to receive the list of
  176. reference-incremented transitions. Release with
  177. :c:func:`obs_frontend_source_list_free`
  178. ---------------------------------------
  179. .. function:: obs_source_t *obs_frontend_get_current_transition(void)
  180. :return: A new reference to the currently active transition.
  181. Release with :c:func:`obs_source_release()`.
  182. ---------------------------------------
  183. .. function:: void obs_frontend_set_current_transition(obs_source_t *transition)
  184. :param transition: The transition to set as the current transition
  185. ---------------------------------------
  186. .. function:: int obs_frontend_get_transition_duration(void)
  187. :return: The transition duration (in milliseconds) currently set in the UI
  188. ---------------------------------------
  189. .. function:: void obs_frontend_set_transition_duration(int duration)
  190. :param duration: Desired transition duration, in milliseconds
  191. ---------------------------------------
  192. .. function:: void obs_frontend_release_tbar(void)
  193. Emulate a mouse button release on the transition bar and determine transition status.
  194. ---------------------------------------
  195. .. function:: void obs_frontend_set_tbar_position(int position)
  196. Set the value of the transition bar.
  197. :param position: The position to set the T-bar to, with a range of 0-1023
  198. ---------------------------------------
  199. .. function:: int obs_frontend_get_tbar_position(void)
  200. Get the value of the transition bar.
  201. :return: The value of the position of the T-bar to, with a range of 0-1023
  202. ---------------------------------------
  203. .. function:: char **obs_frontend_get_scene_collections(void)
  204. :return: The list of scene collection names, ending with NULL. The list is
  205. stored within one contiguous segment of memory, so freeing
  206. the returned pointer with :c:func:`bfree()` will free the
  207. entire list.
  208. ---------------------------------------
  209. .. function:: char *obs_frontend_get_current_scene_collection(void)
  210. :return: A new pointer to the current scene collection name. Free
  211. with :c:func:`bfree()`
  212. ---------------------------------------
  213. .. function:: void obs_frontend_set_current_scene_collection(const char *collection)
  214. :param collection: Name of the scene collection to activate
  215. ---------------------------------------
  216. .. function:: bool obs_frontend_add_scene_collection(const char *name)
  217. Add a new scene collection, then switch to it.
  218. :param name: Name of the scene collection to add/create
  219. ---------------------------------------
  220. .. function:: char **obs_frontend_get_profiles(void)
  221. :return: The list of profile names, ending with NULL. The list is
  222. stored within one contiguous segment of memory, so freeing
  223. the returned pointer with :c:func:`bfree()` will free the
  224. entire list.
  225. ---------------------------------------
  226. .. function:: char *obs_frontend_get_current_profile(void)
  227. :return: A new pointer to the current profile name. Free with
  228. :c:func:`bfree()`
  229. ---------------------------------------
  230. .. function:: char *obs_frontend_get_current_profile_path(void)
  231. :return: A new pointer to the current profile's path on the
  232. filesystem. Free with :c:func:`bfree()`
  233. ---------------------------------------
  234. .. function:: void obs_frontend_set_current_profile(const char *profile)
  235. :param profile: Name of the profile to activate
  236. ---------------------------------------
  237. .. function:: bool obs_frontend_create_profile(const char *name)
  238. :param name: Name of the new profile to create (must be unique)
  239. ---------------------------------------
  240. .. function:: bool obs_frontend_duplicate_profile(const char *name)
  241. :param name: Name of the duplicate profile to create (must be unique)
  242. ---------------------------------------
  243. .. function:: void obs_frontend_delete_profile(const char *profile)
  244. :param profile: Name of the profile to delete
  245. ---------------------------------------
  246. .. function:: void *obs_frontend_add_tools_menu_qaction(const char *name)
  247. Adds a QAction to the tools menu then returns it.
  248. :param name: Name for the new menu item
  249. :return: A pointer to the added QAction
  250. ---------------------------------------
  251. .. function:: void obs_frontend_add_tools_menu_item(const char *name, obs_frontend_cb callback, void *private_data)
  252. Adds a tools menu item and links the ::clicked signal to the
  253. callback.
  254. :param name: The name for the new menu item
  255. :param callback: Callback to use when the menu item is clicked
  256. :param private_data: Private data associated with the callback
  257. ---------------------------------------
  258. .. function:: void* obs_frontend_add_dock(void *dock)
  259. Adds a QDockWidget to the UI's Docks menu.
  260. :param dock: QDockWidget to add/create
  261. :return: A pointer to the added QAction
  262. .. deprecated:: 30.0
  263. Prefer :c:func:`obs_frontend_add_dock_by_id()` or
  264. :c:func:`obs_frontend_add_custom_qdock()` instead.
  265. ---------------------------------------
  266. .. function:: bool obs_frontend_add_dock_by_id(const char *id, const char *title, void *widget)
  267. Adds a dock with the widget to the UI with a toggle in the Docks
  268. menu.
  269. When the dock is closed, a custom QEvent of type `QEvent::User + QEvent::Close`
  270. is sent to the widget to enable it to react to the event (e.g., unload elements
  271. to save resources).
  272. A generic QShowEvent is already sent by default when the widget is being
  273. shown (e.g., dock opened).
  274. Note: Use :c:func:`obs_frontend_remove_dock` to remove the dock
  275. and the id from the UI.
  276. :param id: Unique identifier of the dock
  277. :param title: Window title of the dock
  278. :param widget: QWidget to insert in the dock
  279. :return: *true* if the dock was added, *false* if the id was already
  280. used
  281. .. versionadded:: 30.0
  282. ---------------------------------------
  283. .. function:: void obs_frontend_remove_dock(const char *id)
  284. Removes the dock with this id from the UI.
  285. :param id: Unique identifier of the dock to remove.
  286. .. versionadded:: 30.0
  287. ---------------------------------------
  288. .. function:: bool obs_frontend_add_custom_qdock(const char *id, void *dock)
  289. Adds a custom dock to the UI with no toggle.
  290. Note: Use :c:func:`obs_frontend_remove_dock` to remove the dock
  291. reference and id from the UI.
  292. :param id: Unique identifier of the dock
  293. :param dock: QDockWidget to add
  294. :return: *true* if the dock was added, *false* if the id was already
  295. used
  296. .. versionadded:: 30.0
  297. ---------------------------------------
  298. .. function:: void obs_frontend_add_event_callback(obs_frontend_event_cb callback, void *private_data)
  299. Adds a callback that will be called when a frontend event occurs.
  300. See :c:type:`obs_frontend_event` on what sort of events can be
  301. triggered.
  302. :param callback: Callback to use when a frontend event occurs
  303. :param private_data: Private data associated with the callback
  304. ---------------------------------------
  305. .. function:: void obs_frontend_remove_event_callback(obs_frontend_event_cb callback, void *private_data)
  306. Removes an event callback.
  307. :param callback: Callback to remove
  308. :param private_data: Private data associated with the callback
  309. ---------------------------------------
  310. .. function:: void obs_frontend_add_save_callback(obs_frontend_save_cb callback, void *private_data)
  311. Adds a callback that will be called when the current scene collection
  312. is being saved/loaded.
  313. :param callback: Callback to use when saving/loading a scene
  314. collection
  315. :param private_data: Private data associated with the callback
  316. ---------------------------------------
  317. .. function:: void obs_frontend_remove_save_callback(obs_frontend_save_cb callback, void *private_data)
  318. Removes a save/load callback.
  319. :param callback: Callback to remove
  320. :param private_data: Private data associated with the callback
  321. ---------------------------------------
  322. .. function:: void obs_frontend_add_preload_callback(obs_frontend_save_cb callback, void *private_data)
  323. Adds a callback that will be called right before a scene collection
  324. is loaded.
  325. :param callback: Callback to use when pre-loading
  326. :param private_data: Private data associated with the callback
  327. ---------------------------------------
  328. .. function:: void obs_frontend_remove_preload_callback(obs_frontend_save_cb callback, void *private_data)
  329. Removes a pre-load callback.
  330. :param callback: Callback to remove
  331. :param private_data: Private data associated with the callback
  332. ---------------------------------------
  333. .. function:: void obs_frontend_push_ui_translation(obs_frontend_translate_ui_cb translate)
  334. Pushes a UI translation callback. This allows a front-end plugin to
  335. intercept when Qt is automatically generating translating data.
  336. Typically this is just called with obs_module_get_string.
  337. :param translate: The translation callback to use
  338. ---------------------------------------
  339. .. function:: void obs_frontend_pop_ui_translation(void)
  340. Pops the current UI translation callback.
  341. ---------------------------------------
  342. .. function:: void obs_frontend_streaming_start(void)
  343. Starts streaming.
  344. ---------------------------------------
  345. .. function:: void obs_frontend_streaming_stop(void)
  346. Stops streaming.
  347. ---------------------------------------
  348. .. function:: bool obs_frontend_streaming_active(void)
  349. :return: *true* if streaming active, *false* otherwise
  350. ---------------------------------------
  351. .. function:: void obs_frontend_recording_start(void)
  352. Starts recording.
  353. ---------------------------------------
  354. .. function:: void obs_frontend_recording_stop(void)
  355. Stops recording.
  356. ---------------------------------------
  357. .. function:: bool obs_frontend_recording_active(void)
  358. :return: *true* if recording active, *false* otherwise
  359. ---------------------------------------
  360. .. function:: void obs_frontend_recording_pause(bool pause)
  361. :pause: *true* to pause recording, *false* to unpause
  362. ---------------------------------------
  363. .. function:: bool obs_frontend_recording_paused(void)
  364. :return: *true* if recording paused, *false* otherwise
  365. ---------------------------------------
  366. .. function:: bool obs_frontend_recording_split_file(void)
  367. Asks OBS to split the current recording file.
  368. :return: *true* if splitting was successfully requested (this
  369. does not mean that splitting has finished or guarantee that it
  370. split successfully), *false* if recording is inactive or paused
  371. or if file splitting is disabled.
  372. ---------------------------------------
  373. .. function:: bool obs_frontend_recording_add_chapter(const char *name)
  374. Asks OBS to insert a chapter marker at the current output time into the recording.
  375. :param name: The name for the chapter, may be *NULL* to use an automatically generated name ("Unnamed <Chapter number>" or localized equivalent).
  376. :return: *true* if insertion was successful, *false* if recording is inactive, paused, or if chapter insertion is not supported by the current output.
  377. .. versionadded:: 30.2
  378. ---------------------------------------
  379. .. function:: void obs_frontend_replay_buffer_start(void)
  380. Starts the replay buffer.
  381. ---------------------------------------
  382. .. function:: void obs_frontend_replay_buffer_stop(void)
  383. Stops the replay buffer.
  384. ---------------------------------------
  385. .. function:: void obs_frontend_replay_buffer_save(void)
  386. Saves a replay if the replay buffer is active.
  387. ---------------------------------------
  388. .. function:: bool obs_frontend_replay_buffer_active(void)
  389. :return: *true* if replay buffer active, *false* otherwise
  390. ---------------------------------------
  391. .. function:: void obs_frontend_open_projector(const char *type, int monitor, const char *geometry, const char *name)
  392. :param type: "Preview", "Source", "Scene", "StudioProgram", or "Multiview" (case insensitive)
  393. :param monitor: Monitor to open the projector on. If -1, this opens a window.
  394. :param geometry: If *monitor* is -1, size and position of the projector window. Encoded in Base64 using Qt's geometry encoding.
  395. :param name: If *type* is "Source" or "Scene", name of the source or scene to be displayed
  396. ---------------------------------------
  397. .. function:: void obs_frontend_save(void)
  398. Saves the current scene collection.
  399. ---------------------------------------
  400. .. function:: obs_output_t *obs_frontend_get_streaming_output(void)
  401. :return: A new reference to the current streaming output.
  402. Release with :c:func:`obs_output_release()`.
  403. ---------------------------------------
  404. .. function:: obs_output_t *obs_frontend_get_recording_output(void)
  405. :return: A new reference to the current recording output.
  406. Release with :c:func:`obs_output_release()`.
  407. ---------------------------------------
  408. .. function:: obs_output_t *obs_frontend_get_replay_buffer_output(void)
  409. :return: A new reference to the current replay buffer output.
  410. Release with :c:func:`obs_output_release()`.
  411. ---------------------------------------
  412. .. function:: config_t *obs_frontend_get_profile_config(void)
  413. :return: The config_t* associated with the current profile
  414. ---------------------------------------
  415. .. deprecated:: 31.0
  416. .. function:: config_t *obs_frontend_get_global_config(void)
  417. :return: The config_t* associated with the global config (global.ini)
  418. ---------------------------------------
  419. .. function:: config_t *obs_frontend_get_app_config(void)
  420. :return: The config_t* associated with system-wide settings (global.ini)
  421. .. versionadded:: 31.0
  422. ---------------------------------------
  423. .. function:: config_t *obs_frontend_get_user_config(void)
  424. :return: The config_t* associated with user settings (user.ini)
  425. .. versionadded:: 31.0
  426. ---------------------------------------
  427. .. function:: void obs_frontend_set_streaming_service(obs_service_t *service)
  428. Sets the current streaming service to stream with.
  429. :param service: The streaming service to set
  430. ---------------------------------------
  431. .. function:: obs_service_t *obs_frontend_get_streaming_service(void)
  432. :return: The current streaming service object. Does not increment the
  433. reference.
  434. ---------------------------------------
  435. .. function:: void obs_frontend_save_streaming_service(void)
  436. Saves the current streaming service data.
  437. ---------------------------------------
  438. .. function:: bool obs_frontend_preview_program_mode_active(void)
  439. :return: *true* if studio mode is active, *false* otherwise
  440. ---------------------------------------
  441. .. function:: void obs_frontend_set_preview_program_mode(bool enable)
  442. Activates/deactivates studio mode.
  443. :param enable: *true* to activate studio mode, *false* to deactivate
  444. studio mode
  445. ---------------------------------------
  446. .. function:: void obs_frontend_preview_program_trigger_transition(void)
  447. Triggers a preview-to-program transition if studio mode is active.
  448. ---------------------------------------
  449. .. function:: obs_source_t *obs_frontend_get_current_preview_scene(void)
  450. :return: A new reference to the current preview scene if studio mode
  451. is active, or *NULL* if studio mode is not active. Release
  452. with :c:func:`obs_source_release()`.
  453. ---------------------------------------
  454. .. function:: void obs_frontend_set_current_preview_scene(obs_source_t *scene)
  455. Sets the current preview scene in studio mode. Does nothing if studio
  456. mode is disabled.
  457. :param scene: The scene to set as the current preview
  458. ---------------------------------------
  459. .. function:: void obs_frontend_set_preview_enabled(bool enable)
  460. Sets the enable state of the preview display. Only relevant with
  461. studio mode disabled.
  462. :param enable: *true* to enable preview, *false* to disable preview
  463. ---------------------------------------
  464. .. function:: bool obs_frontend_preview_enabled(void)
  465. :return: *true* if the preview display is enabled, *false* otherwise
  466. ---------------------------------------
  467. .. function:: void *obs_frontend_take_screenshot(void)
  468. Takes a screenshot of the main OBS output.
  469. ---------------------------------------
  470. .. function:: void *obs_frontend_take_source_screenshot(obs_source_t *source)
  471. Takes a screenshot of the specified source.
  472. :param source: The source to take screenshot of
  473. ---------------------------------------
  474. .. function:: obs_output_t *obs_frontend_get_virtualcam_output(void)
  475. :return: A new reference to the current virtual camera output.
  476. Release with :c:func:`obs_output_release()`.
  477. ---------------------------------------
  478. .. function:: void obs_frontend_start_virtualcam(void)
  479. Starts the virtual camera.
  480. ---------------------------------------
  481. .. function:: void obs_frontend_stop_virtualcam(void)
  482. Stops the virtual camera.
  483. ---------------------------------------
  484. .. function:: bool obs_frontend_virtualcam_active(void)
  485. :return: *true* if virtual camera is active, *false* otherwise
  486. ---------------------------------------
  487. .. function:: void obs_frontend_reset_video(void)
  488. Reloads the UI canvas and resets libobs video with latest data from
  489. the current profile.
  490. ---------------------------------------
  491. .. function:: void *obs_frontend_open_source_properties(obs_source_t *source)
  492. Opens the properties window of the specified source.
  493. :param source: The source to open the properties window of
  494. ---------------------------------------
  495. .. function:: void *obs_frontend_open_source_filters(obs_source_t *source)
  496. Opens the filters window of the specified source.
  497. :param source: The source to open the filters window of
  498. ---------------------------------------
  499. .. function:: void *obs_frontend_open_source_interaction(obs_source_t *source)
  500. Opens the interact window of the specified source. Only call if
  501. source has the *OBS_SOURCE_INTERACTION* output flag.
  502. :param source: The source to open the interact window of
  503. ---------------------------------------
  504. .. function:: void *obs_frontend_open_sceneitem_edit_transform(obs_sceneitem_t *item)
  505. Opens the edit transform window of the specified sceneitem.
  506. :param item: The sceneitem to open the edit transform window of
  507. .. versionadded:: 29.1
  508. ---------------------------------------
  509. .. function:: char *obs_frontend_get_current_record_output_path(void)
  510. :return: A new pointer to the current record output path. Free
  511. with :c:func:`bfree()`
  512. ---------------------------------------
  513. .. function:: const char *obs_frontend_get_locale_string(const char *string)
  514. :return: Gets the frontend translation of a given string.
  515. ---------------------------------------
  516. .. function:: bool obs_frontend_is_theme_dark(void)
  517. :return: Checks if the current theme is dark or light.
  518. .. versionadded:: 29.0.0
  519. ---------------------------------------
  520. .. function:: char *obs_frontend_get_last_recording(void)
  521. :return: The file path of the last recording. Free with :c:func:`bfree()`
  522. .. versionadded:: 29.0.0
  523. ---------------------------------------
  524. .. function:: char *obs_frontend_get_last_screenshot(void)
  525. :return: The file path of the last screenshot taken. Free with
  526. :c:func:`bfree()`
  527. .. versionadded:: 29.0.0
  528. ---------------------------------------
  529. .. function:: char *obs_frontend_get_last_replay(void)
  530. :return: The file path of the last replay buffer saved. Free with
  531. :c:func:`bfree()`
  532. .. versionadded:: 29.0.0
  533. ---------------------------------------
  534. .. function:: void obs_frontend_add_undo_redo_action(const char *name, const undo_redo_cb undo, const undo_redo_cb redo, const char *undo_data, const char *redo_data, bool repeatable)
  535. :param name: The name of the undo redo action
  536. :param undo: Callback to use for undo
  537. :param redo: Callback to use for redo
  538. :param undo_data: String with data for the undo callback
  539. :param redo_data: String with data for the redo callback
  540. :param repeatable: Allow multiple actions with the same name to be merged to 1 undo redo action.
  541. This uses the undo action from the first and the redo action from the last action.
  542. .. versionadded:: 29.1