obs-outputs.c 1.6 KB

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