obs-outputs.c 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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, mbed_mutex_lock, mbed_mutex_unlock);
  51. #endif
  52. obs_register_output(&rtmp_output_info);
  53. obs_register_output(&null_output_info);
  54. obs_register_output(&flv_output_info);
  55. obs_register_output(&mp4_output_info);
  56. return true;
  57. }
  58. void obs_module_unload(void)
  59. {
  60. #ifdef _WIN32
  61. #ifdef MBEDTLS_THREADING_ALT
  62. mbedtls_threading_free_alt();
  63. #endif
  64. WSACleanup();
  65. #endif
  66. }