obs-outputs.c 1.7 KB

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