PrivateDefines.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. //
  2. // Created by Grishka on 20.04.2018.
  3. //
  4. #ifndef TGVOIP_PRIVATEDEFINES_H
  5. #define TGVOIP_PRIVATEDEFINES_H
  6. #define PKT_INIT 1
  7. #define PKT_INIT_ACK 2
  8. #define PKT_STREAM_STATE 3
  9. #define PKT_STREAM_DATA 4
  10. #define PKT_UPDATE_STREAMS 5
  11. #define PKT_PING 6
  12. #define PKT_PONG 7
  13. #define PKT_STREAM_DATA_X2 8
  14. #define PKT_STREAM_DATA_X3 9
  15. #define PKT_LAN_ENDPOINT 10
  16. #define PKT_NETWORK_CHANGED 11
  17. #define PKT_SWITCH_PREF_RELAY 12
  18. #define PKT_SWITCH_TO_P2P 13
  19. #define PKT_NOP 14
  20. //#define PKT_GROUP_CALL_KEY 15 // replaced with 'extra' in 2.1 (protocol v6)
  21. //#define PKT_REQUEST_GROUP 16
  22. #define PKT_STREAM_EC 17
  23. #define IS_MOBILE_NETWORK(x) (x==NET_TYPE_GPRS || x==NET_TYPE_EDGE || x==NET_TYPE_3G || x==NET_TYPE_HSPA || x==NET_TYPE_LTE || x==NET_TYPE_OTHER_MOBILE)
  24. #define PROTOCOL_NAME 0x50567247 // "GrVP" in little endian (reversed here)
  25. #define PROTOCOL_VERSION 9
  26. #define MIN_PROTOCOL_VERSION 3
  27. #define STREAM_DATA_FLAG_LEN16 0x40
  28. #define STREAM_DATA_FLAG_HAS_MORE_FLAGS 0x80
  29. // Since the data can't be larger than the MTU anyway,
  30. // 5 top bits of data length are allocated for these flags
  31. #define STREAM_DATA_XFLAG_KEYFRAME (1 << 15)
  32. #define STREAM_DATA_XFLAG_FRAGMENTED (1 << 14)
  33. #define STREAM_DATA_XFLAG_EXTRA_FEC (1 << 13)
  34. #define STREAM_TYPE_AUDIO 1
  35. #define STREAM_TYPE_VIDEO 2
  36. #define FOURCC(a,b,c,d) ((uint32_t)d | ((uint32_t)c << 8) | ((uint32_t)b << 16) | ((uint32_t)a << 24))
  37. #define PRINT_FOURCC(x) (char)(x >> 24), (char)(x >> 16), (char)(x >> 8), (char)x
  38. #define CODEC_OPUS_OLD 1
  39. #define CODEC_OPUS FOURCC('O','P','U','S')
  40. #define CODEC_AVC FOURCC('A','V','C',' ')
  41. #define CODEC_HEVC FOURCC('H','E','V','C')
  42. #define CODEC_VP8 FOURCC('V','P','8','0')
  43. #define CODEC_VP9 FOURCC('V','P','9','0')
  44. #define CODEC_AV1 FOURCC('A','V','0','1')
  45. #define DEFAULT_MTU 1100
  46. /*flags:# voice_call_id:flags.2?int128 in_seq_no:flags.4?int out_seq_no:flags.4?int
  47. * recent_received_mask:flags.5?int proto:flags.3?int extra:flags.1?string raw_data:flags.0?string*/
  48. #define PFLAG_HAS_DATA 1
  49. #define PFLAG_HAS_EXTRA 2
  50. #define PFLAG_HAS_CALL_ID 4
  51. #define PFLAG_HAS_PROTO 8
  52. #define PFLAG_HAS_SEQ 16
  53. #define PFLAG_HAS_RECENT_RECV 32
  54. #define PFLAG_HAS_SENDER_TAG_HASH 64
  55. #define XPFLAG_HAS_EXTRA 1
  56. #define XPFLAG_HAS_RECV_TS 2
  57. #define EXTRA_TYPE_STREAM_FLAGS 1
  58. #define EXTRA_TYPE_STREAM_CSD 2
  59. #define EXTRA_TYPE_LAN_ENDPOINT 3
  60. #define EXTRA_TYPE_NETWORK_CHANGED 4
  61. #define EXTRA_TYPE_GROUP_CALL_KEY 5
  62. #define EXTRA_TYPE_REQUEST_GROUP 6
  63. #define EXTRA_TYPE_IPV6_ENDPOINT 7
  64. #define EXTRA_TYPE_BW_ESTIMATE 8
  65. #define EXTRA_TYPE_VIDEO_ROTATION 9
  66. #define STREAM_FLAG_ENABLED 1
  67. #define STREAM_FLAG_DTX 2
  68. #define STREAM_FLAG_EXTRA_EC 4
  69. #define STREAM_RFLAG_SUPPORTED 1
  70. #define INIT_FLAG_DATA_SAVING_ENABLED 1
  71. #define INIT_FLAG_GROUP_CALLS_SUPPORTED 2
  72. #define INIT_FLAG_VIDEO_SEND_SUPPORTED 4
  73. #define INIT_FLAG_VIDEO_RECV_SUPPORTED 8
  74. #define INIT_VIDEO_RES_NONE 0
  75. #define INIT_VIDEO_RES_240 1
  76. #define INIT_VIDEO_RES_360 2
  77. #define INIT_VIDEO_RES_480 3
  78. #define INIT_VIDEO_RES_720 4
  79. #define INIT_VIDEO_RES_1080 5
  80. #define INIT_VIDEO_RES_1440 6
  81. #define INIT_VIDEO_RES_4K 7
  82. #define TLID_DECRYPTED_AUDIO_BLOCK 0xDBF948C1
  83. #define TLID_SIMPLE_AUDIO_BLOCK 0xCC0D0E76
  84. #define TLID_UDP_REFLECTOR_PEER_INFO 0x27D9371C
  85. #define TLID_UDP_REFLECTOR_PEER_INFO_IPV6 0x83fc73b1
  86. #define TLID_UDP_REFLECTOR_SELF_INFO 0xc01572c7
  87. #define TLID_UDP_REFLECTOR_REQUEST_PACKETS_INFO 0x1a06fc96
  88. #define TLID_UDP_REFLECTOR_LAST_PACKETS_INFO 0x0e107305
  89. #define TLID_VECTOR 0x1cb5c415
  90. #define PAD4(x) (4-(x+(x<=253 ? 1 : 0))%4)
  91. #define MAX_RECENT_PACKETS 128
  92. #define MAX(a,b) (a>b ? a : b)
  93. #define MIN(a,b) (a<b ? a : b)
  94. #define SHA1_LENGTH 20
  95. #define SHA256_LENGTH 32
  96. #ifdef _MSC_VER
  97. #define MSC_STACK_FALLBACK(a, b) (b)
  98. #else
  99. #define MSC_STACK_FALLBACK(a, b) (a)
  100. #endif
  101. #define SEQ_MAX 0xFFFFFFFF
  102. inline bool seqgt(uint32_t s1, uint32_t s2){
  103. return ((s1>s2) && (s1-s2<=SEQ_MAX/2)) || ((s1<s2) && (s2-s1>SEQ_MAX/2));
  104. }
  105. #define NEED_RATE_FLAG_SHITTY_INTERNET_MODE 1
  106. #define NEED_RATE_FLAG_UDP_NA 2
  107. #define NEED_RATE_FLAG_UDP_BAD 4
  108. #define NEED_RATE_FLAG_RECONNECTING 8
  109. #define VIDEO_FRAME_FLAG_KEYFRAME 1
  110. #endif //TGVOIP_PRIVATEDEFINES_H