obs-ffmpeg-url.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. #pragma once
  2. #include <libavformat/avformat.h>
  3. #include <libavutil/avassert.h>
  4. #include <libavutil/avstring.h>
  5. #include <libavutil/parseutils.h>
  6. #include <libavutil/time.h>
  7. #include <libavutil/error.h>
  8. #include <stdio.h>
  9. #include <sys/timeb.h>
  10. #include <time.h>
  11. #define HTTP_PROTO "http"
  12. #define RIST_PROTO "rist"
  13. #define SRT_PROTO "srt"
  14. #define TCP_PROTO "tcp"
  15. #define UDP_PROTO "udp"
  16. /* lightened version of a struct used by avformat */
  17. typedef struct URLContext {
  18. void *priv_data; /* SRTContext or RISTContext */
  19. char *url; /* URL */
  20. int max_packet_size;
  21. AVIOInterruptCB interrupt_callback;
  22. int64_t rw_timeout; /* max time to wait for write completion in mcs */
  23. } URLContext;
  24. #define UDP_DEFAULT_PAYLOAD_SIZE 1316
  25. /* We need to override libsrt/win/syslog_defs.h due to conflicts w/ some libobs
  26. * definitions.
  27. */
  28. #ifndef _WIN32
  29. #define _SYS_SYSLOG_H
  30. #endif
  31. #ifdef _WIN32
  32. #ifndef INC_SRT_WINDOWS_SYSLOG_DEFS_H
  33. #define INC_SRT_WINDOWS_SYSLOG_DEFS_H
  34. #define LOG_EMERG 0
  35. #define LOG_ALERT 1
  36. #define LOG_CRIT 2
  37. #define LOG_ERR 3
  38. //#define LOG_WARNING 4 // this creates issues w/ libobs LOG_WARNING = 200
  39. #define LOG_NOTICE 5
  40. //#define LOG_INFO 6 // issue w/ libobs
  41. //#define LOG_DEBUG 7 // issue w/ libobs
  42. #define LOG_PRIMASK 0x07
  43. #define LOG_PRI(p) ((p)&LOG_PRIMASK)
  44. #define LOG_MAKEPRI(fac, pri) (((fac) << 3) | (pri))
  45. #define LOG_KERN (0 << 3)
  46. #define LOG_USER (1 << 3)
  47. #define LOG_MAIL (2 << 3)
  48. #define LOG_DAEMON (3 << 3)
  49. #define LOG_AUTH (4 << 3)
  50. #define LOG_SYSLOG (5 << 3)
  51. #define LOG_LPR (6 << 3)
  52. #define LOG_NEWS (7 << 3)
  53. #define LOG_UUCP (8 << 3)
  54. #define LOG_CRON (9 << 3)
  55. #define LOG_AUTHPRIV (10 << 3)
  56. #define LOG_FTP (11 << 3)
  57. /* Codes through 15 are reserved for system use */
  58. #define LOG_LOCAL0 (16 << 3)
  59. #define LOG_LOCAL1 (17 << 3)
  60. #define LOG_LOCAL2 (18 << 3)
  61. #define LOG_LOCAL3 (19 << 3)
  62. #define LOG_LOCAL4 (20 << 3)
  63. #define LOG_LOCAL5 (21 << 3)
  64. #define LOG_LOCAL6 (22 << 3)
  65. #define LOG_LOCAL7 (23 << 3)
  66. #define LOG_NFACILITIES 24
  67. #define LOG_FACMASK 0x03f8
  68. #define LOG_FAC(p) (((p)&LOG_FACMASK) >> 3)
  69. #endif
  70. #endif
  71. /* We need to override libsrt/logging_api.h due to conflicts with some libobs
  72. * definitions.
  73. */
  74. #define INC_SRT_LOGGING_API_H
  75. // These are required for access functions:
  76. // - adding FA (requires set)
  77. // - setting a log stream (requires iostream)
  78. #ifdef __cplusplus
  79. #include <set>
  80. #include <iostream>
  81. #endif
  82. #ifndef _WIN32
  83. #include <syslog.h>
  84. #endif
  85. // Syslog is included so that it provides log level names.
  86. // Haivision log standard requires the same names plus extra one:
  87. #ifndef LOG_DEBUG_TRACE
  88. #define LOG_DEBUG_TRACE 8
  89. #endif
  90. // Flags
  91. #define SRT_LOGF_DISABLE_TIME 1
  92. #define SRT_LOGF_DISABLE_THREADNAME 2
  93. #define SRT_LOGF_DISABLE_SEVERITY 4
  94. #define SRT_LOGF_DISABLE_EOL 8
  95. // Handler type
  96. typedef void SRT_LOG_HANDLER_FN(void *opaque, int level, const char *file,
  97. int line, const char *area,
  98. const char *message);
  99. #ifdef __cplusplus
  100. namespace srt_logging {
  101. struct LogFA {
  102. private:
  103. int value;
  104. public:
  105. operator int() const { return value; }
  106. LogFA(int v) : value(v) {}
  107. };
  108. const LogFA LOGFA_GENERAL = 0;
  109. namespace LogLevel {
  110. enum type {
  111. fatal = LOG_CRIT,
  112. error = LOG_ERR,
  113. warning = 4, //issue w/ libobs so LOG_WARNING is removed
  114. note = LOG_NOTICE,
  115. debug = 7 //issue w/ libobs so LOG_DEBUG is removed
  116. };
  117. }
  118. class Logger;
  119. }
  120. #endif