audio_webrtc_config.h 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. /* Copyright (C) 2012 Doubango Telecom <http://www.doubango.org>
  2. *
  3. * This file is part of Open Source Doubango Framework.
  4. *
  5. * DOUBANGO is free software: you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License as published by
  7. * the Free Software Foundation, either version 3 of the License, or
  8. * (at your option) any later version.
  9. *
  10. * DOUBANGO is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU General Public License
  16. * along with DOUBANGO.
  17. */
  18. #ifndef DOUBANGO_AUDIO_WEBRTC_CONFIG_H
  19. #define DOUBANGO_AUDIO_WEBRTC_CONFIG_H
  20. #ifdef __SYMBIAN32__
  21. #undef _WIN32 /* Because of WINSCW */
  22. #endif
  23. // Windows (XP/Vista/7/CE and Windows Mobile) macro definition
  24. #if defined(WIN32)|| defined(_WIN32) || defined(_WIN32_WCE)
  25. # define DOUBANGO_AUDIO_WEBRTC_UNDER_WINDOWS 1
  26. #endif
  27. // OS X or iOS
  28. #if defined(__APPLE__)
  29. # define DOUBANGO_AUDIO_WEBRTC_UNDER_APPLE 1
  30. #endif
  31. #if TARGET_OS_MAC
  32. # define DOUBANGO_AUDIO_WEBRTC_UNDER_MAC 1
  33. #endif
  34. #if TARGET_OS_IPHONE
  35. # define DOUBANGO_AUDIO_WEBRTC_UNDER_IPHONE 1
  36. #endif
  37. #if TARGET_IPHONE_SIMULATOR
  38. # define DOUBANGO_AUDIO_WEBRTC_UNDER_IPHONE_SIMULATOR 1
  39. #endif
  40. #if defined(ANDROID)
  41. # define DOUBANGO_AUDIO_WEBRTC_UNDER_ANDROID 1
  42. #endif
  43. // x86
  44. #if DOUBANGO_AUDIO_WEBRTC_UNDER_WINDOWS || defined(__x86_64__) || defined(__x86__) || defined(__i386__)
  45. # define DOUBANGO_AUDIO_WEBRTC_UNDER_X86 1
  46. #endif
  47. // Mobile
  48. #if defined(_WIN32_WCE) || defined(ANDROID) // iOS (not true)=> || defined(IOS)
  49. # define DOUBANGO_AUDIO_WEBRTC_UNDER_MOBILE 1
  50. #endif
  51. #if (DOUBANGO_AUDIO_WEBRTC_UNDER_WINDOWS || defined(__SYMBIAN32__)) && defined(DOUBANGO_AUDIO_WEBRTC_EXPORTS)
  52. # define DOUBANGO_AUDIO_WEBRTC_API __declspec(dllexport)
  53. # define DOUBANGO_AUDIO_WEBRTC_GEXTERN __declspec(dllexport)
  54. #elif (DOUBANGO_AUDIO_WEBRTC_UNDER_WINDOWS || defined(__SYMBIAN32__))
  55. # define DOUBANGO_AUDIO_WEBRTC_API __declspec(dllimport)
  56. # define DOUBANGO_AUDIO_WEBRTC_GEXTERN __declspec(dllimport)
  57. #else
  58. # define DOUBANGO_AUDIO_WEBRTC_API
  59. # define DOUBANGO_AUDIO_WEBRTC_GEXTERN extern
  60. #endif
  61. /* Guards against C++ name mangling */
  62. #ifdef __cplusplus
  63. # define DOUBANGO_AUDIO_WEBRTC_BEGIN_DECLS extern "C" {
  64. # define DOUBANGO_AUDIO_WEBRTC_END_DECLS }
  65. #else
  66. # define DOUBANGO_AUDIO_WEBRTC_BEGIN_DECLS
  67. # define DOUBANGO_AUDIO_WEBRTC_END_DECLS
  68. #endif
  69. #ifdef _MSC_VER
  70. #if HAVE_FFMPEG // FFMPeg warnings (treated as errors)
  71. # pragma warning (disable:4244)
  72. #endif
  73. # define inline __inline
  74. # define _CRT_SECURE_NO_WARNINGS
  75. #endif
  76. /* Detecting C99 compilers
  77. */
  78. #if (__STDC_VERSION__ == 199901L) && !defined(__C99__)
  79. # define __C99__
  80. #endif
  81. #include <stdint.h>
  82. #ifdef __SYMBIAN32__
  83. #include <stdlib.h>
  84. #endif
  85. #if HAVE_CONFIG_H
  86. #include "../config.h"
  87. #endif
  88. #if DOUBANGO_AUDIO_WEBRTC_UNDER_WINDOWS
  89. # define DOUBANGO_AUDIO_WEBRTC_DEVICE_DEFAULT AudioDeviceModule::kDefaultCommunicationDevice
  90. #else
  91. # define DOUBANGO_AUDIO_WEBRTC_DEVICE_DEFAULT 0
  92. #endif
  93. #if DOUBANGO_AUDIO_WEBRTC_UNDER_ANDROID
  94. #include <android/log.h>
  95. #include "tsk_string.h"
  96. #include "tsk_memory.h"
  97. #include "tsk_debug.h"
  98. #define ANDROID_DEBUG_TAG "plugin_audio_webrtc" // DDMS log tag when using eclise
  99. static void DOUBANGO_AUDIO_WEBRTC_DEBUG_ANY(int level, const char* fmt, ...)
  100. {
  101. char* message = tsk_null;
  102. va_list ap;
  103. va_start(ap, fmt);
  104. tsk_sprintf_2(&message, fmt, &ap);
  105. if(message) {
  106. switch(level) {
  107. case DEBUG_LEVEL_INFO:
  108. __android_log_write(ANDROID_LOG_INFO, ANDROID_DEBUG_TAG, message);
  109. break;
  110. case DEBUG_LEVEL_WARN:
  111. __android_log_write(ANDROID_LOG_WARN, ANDROID_DEBUG_TAG, message);
  112. break;
  113. case DEBUG_LEVEL_ERROR:
  114. __android_log_write(ANDROID_LOG_ERROR, ANDROID_DEBUG_TAG, message);
  115. break;
  116. case DEBUG_LEVEL_FATAL:
  117. __android_log_write(ANDROID_LOG_FATAL, ANDROID_DEBUG_TAG, message);
  118. break;
  119. }
  120. TSK_FREE(message);
  121. }
  122. va_end(ap);
  123. }
  124. #define DOUBANGO_AUDIO_WEBRTC_DEBUG_INFO(FMT, ...) DOUBANGO_AUDIO_WEBRTC_DEBUG_ANY(DEBUG_LEVEL_INFO, FMT, ##__VA_ARGS__)
  125. #define DOUBANGO_AUDIO_WEBRTC_DEBUG_WARN(FMT, ...) DOUBANGO_AUDIO_WEBRTC_DEBUG_ANY(DEBUG_LEVEL_WARN, FMT, ##__VA_ARGS__)
  126. #define DOUBANGO_AUDIO_WEBRTC_DEBUG_ERROR(FMT, ...) DOUBANGO_AUDIO_WEBRTC_DEBUG_ANY(DEBUG_LEVEL_ERROR, FMT, ##__VA_ARGS__)
  127. #define DOUBANGO_AUDIO_WEBRTC_DEBUG_FATAL(FMT, ...) DOUBANGO_AUDIO_WEBRTC_DEBUG_ANY(DEBUG_LEVEL_FATAL, FMT, ##__VA_ARGS__)
  128. #else
  129. #define DOUBANGO_AUDIO_WEBRTC_DEBUG_INFO(FMT, ...) TSK_DEBUG_INFO(FMT, ##__VA_ARGS__)
  130. #define DOUBANGO_AUDIO_WEBRTC_DEBUG_WARN(FMT, ...) TSK_DEBUG_WARN(FMT, ##__VA_ARGS__)
  131. #define DOUBANGO_AUDIO_WEBRTC_DEBUG_ERROR(FMT, ...) TSK_DEBUG_ERROR(FMT, ##__VA_ARGS__)
  132. #define DOUBANGO_AUDIO_WEBRTC_DEBUG_FATAL(FMT, ...) TSK_DEBUG_FATAL(FMT, ##__VA_ARGS__)
  133. #endif /* DOUBANGO_AUDIO_WEBRTC_UNDER_ANDROID */
  134. #endif // DOUBANGO_AUDIO_WEBRTC_CONFIG_H