obs-outputs.c 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #include <obs-module.h>
  2. #include "obs-outputs-config.h"
  3. #ifdef _WIN32
  4. #define WIN32_LEAN_AND_MEAN
  5. #include <winsock2.h>
  6. #include <mbedtls/threading.h>
  7. #endif
  8. OBS_DECLARE_MODULE()
  9. OBS_MODULE_USE_DEFAULT_LOCALE("obs-outputs", "en-US")
  10. MODULE_EXPORT const char *obs_module_description(void)
  11. {
  12. return "OBS core RTMP/FLV/null/FTL outputs";
  13. }
  14. extern struct obs_output_info rtmp_output_info;
  15. extern struct obs_output_info null_output_info;
  16. extern struct obs_output_info flv_output_info;
  17. #if COMPILE_FTL
  18. extern struct obs_output_info ftl_output_info;
  19. #endif
  20. #if defined(_WIN32) && defined(MBEDTLS_THREADING_ALT)
  21. void mbed_mutex_init(mbedtls_threading_mutex_t *m)
  22. {
  23. CRITICAL_SECTION *c = bzalloc(sizeof(CRITICAL_SECTION));
  24. *m = c;
  25. InitializeCriticalSection(c);
  26. }
  27. void mbed_mutex_free(mbedtls_threading_mutex_t *m)
  28. {
  29. CRITICAL_SECTION *c = *m;
  30. DeleteCriticalSection(c);
  31. bfree(*m);
  32. *m = NULL;
  33. }
  34. int mbed_mutex_lock(mbedtls_threading_mutex_t *m)
  35. {
  36. CRITICAL_SECTION *c = *m;
  37. EnterCriticalSection(c);
  38. return 0;
  39. }
  40. int mbed_mutex_unlock(mbedtls_threading_mutex_t *m)
  41. {
  42. CRITICAL_SECTION *c = *m;
  43. LeaveCriticalSection(c);
  44. return 0;
  45. }
  46. #endif
  47. bool obs_module_load(void)
  48. {
  49. #ifdef _WIN32
  50. WSADATA wsad;
  51. WSAStartup(MAKEWORD(2, 2), &wsad);
  52. #endif
  53. #if defined(_WIN32) && defined(MBEDTLS_THREADING_ALT)
  54. mbedtls_threading_set_alt(mbed_mutex_init, mbed_mutex_free,
  55. mbed_mutex_lock, mbed_mutex_unlock);
  56. #endif
  57. obs_register_output(&rtmp_output_info);
  58. obs_register_output(&null_output_info);
  59. obs_register_output(&flv_output_info);
  60. #if COMPILE_FTL
  61. obs_register_output(&ftl_output_info);
  62. #endif
  63. return true;
  64. }
  65. void obs_module_unload(void)
  66. {
  67. #ifdef _WIN32
  68. #ifdef MBEDTLS_THREADING_ALT
  69. mbedtls_threading_free_alt();
  70. #endif
  71. WSACleanup();
  72. #endif
  73. }