#include "config.h" #include "config_unix.h" #include "config_win32.h" #include "debug.h" #include "memory.h" #include "utils/sdp_parser.hpp" #include "unit_common.h" extern "C" { #include "test_sdp_parser.h" } unsigned char sap_packet_data[] = {0x20, 0x0, 0xc4, 0xf1, 0xa9, 0xfe, 0xbd, 0xb8, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x73, 0x64, 0x70, 0x0, 0x76, 0x3d, 0x30, 0xd, 0xa, 0x6f, 0x3d, 0x2d, 0x20, 0x33, 0x36, 0x31, 0x38, 0x39, 0x37, 0x30, 0x20, 0x33, 0x36, 0x31, 0x38, 0x39, 0x37, 0x39, 0x20, 0x49, 0x4e, 0x20, 0x49, 0x50, 0x34, 0x20, 0x31, 0x36, 0x39, 0x2e, 0x32, 0x35, 0x34, 0x2e, 0x31, 0x38, 0x39, 0x2e, 0x31, 0x38, 0x34, 0xd, 0xa, 0x73, 0x3d, 0x41, 0x56, 0x49, 0x4f, 0x55, 0x53, 0x42, 0x2d, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x20, 0x3a, 0x20, 0x32, 0xd, 0xa, 0x69, 0x3d, 0x31, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x3a, 0x20, 0x4c, 0x65, 0x66, 0x74, 0xd, 0xa, 0x63, 0x3d, 0x49, 0x4e, 0x20, 0x49, 0x50, 0x34, 0x20, 0x32, 0x33, 0x39, 0x2e, 0x36, 0x39, 0x2e, 0x36, 0x39, 0x2e, 0x32, 0x36, 0x2f, 0x33, 0x32, 0xd, 0xa, 0x74, 0x3d, 0x30, 0x20, 0x30, 0xd, 0xa, 0x61, 0x3d, 0x6b, 0x65, 0x79, 0x77, 0x64, 0x73, 0x3a, 0x44, 0x61, 0x6e, 0x74, 0x65, 0xd, 0xa, 0x61, 0x3d, 0x72, 0x65, 0x63, 0x76, 0x6f, 0x6e, 0x6c, 0x79, 0xd, 0xa, 0x6d, 0x3d, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x20, 0x35, 0x30, 0x30, 0x34, 0x20, 0x52, 0x54, 0x50, 0x2f, 0x41, 0x56, 0x50, 0x20, 0x39, 0x36, 0xd, 0xa, 0x61, 0x3d, 0x72, 0x74, 0x70, 0x6d, 0x61, 0x70, 0x3a, 0x39, 0x36, 0x20, 0x4c, 0x32, 0x34, 0x2f, 0x34, 0x38, 0x30, 0x30, 0x30, 0x2f, 0x31, 0xd, 0xa, 0x61, 0x3d, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x3a, 0x31, 0xd, 0xa, 0x61, 0x3d, 0x74, 0x73, 0x2d, 0x72, 0x65, 0x66, 0x63, 0x6c, 0x6b, 0x3a, 0x70, 0x74, 0x70, 0x3d, 0x49, 0x45, 0x45, 0x45, 0x31, 0x35, 0x38, 0x38, 0x2d, 0x32, 0x30, 0x30, 0x38, 0x3a, 0x30, 0x30, 0x2d, 0x31, 0x44, 0x2d, 0x43, 0x31, 0x2d, 0x46, 0x46, 0x2d, 0x46, 0x45, 0x2d, 0x41, 0x31, 0x2d, 0x42, 0x38, 0x2d, 0x42, 0x43, 0x3a, 0x30, 0xd, 0xa, 0x61, 0x3d, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x63, 0x6c, 0x6b, 0x3a, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x3d, 0x30, 0xd, 0xa}; unsigned char sap_packet_with_auth_data[] = {0x20, 0x3, 0x1, 0x2, 0x3, 0xc4, 0xf1, 0xa9, 0xfe, 0xbd, 0xb8, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x73, 0x64, 0x70, 0x0, 0x76, 0x3d, 0x30, 0xd, 0xa, 0x6f, 0x3d, 0x2d, 0x20, 0x33, 0x36, 0x31, 0x38, 0x39, 0x37, 0x30, 0x20, 0x33, 0x36, 0x31, 0x38, 0x39, 0x37, 0x39, 0x20, 0x49, 0x4e, 0x20, 0x49, 0x50, 0x34, 0x20, 0x31, 0x36, 0x39, 0x2e, 0x32, 0x35, 0x34, 0x2e, 0x31, 0x38, 0x39, 0x2e, 0x31, 0x38, 0x34, 0xd, 0xa, 0x73, 0x3d, 0x41, 0x56, 0x49, 0x4f, 0x55, 0x53, 0x42, 0x2d, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x20, 0x3a, 0x20, 0x32, 0xd, 0xa, 0x69, 0x3d, 0x31, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x3a, 0x20, 0x4c, 0x65, 0x66, 0x74, 0xd, 0xa, 0x63, 0x3d, 0x49, 0x4e, 0x20, 0x49, 0x50, 0x34, 0x20, 0x32, 0x33, 0x39, 0x2e, 0x36, 0x39, 0x2e, 0x36, 0x39, 0x2e, 0x32, 0x36, 0x2f, 0x33, 0x32, 0xd, 0xa, 0x74, 0x3d, 0x30, 0x20, 0x30, 0xd, 0xa, 0x61, 0x3d, 0x6b, 0x65, 0x79, 0x77, 0x64, 0x73, 0x3a, 0x44, 0x61, 0x6e, 0x74, 0x65, 0xd, 0xa, 0x61, 0x3d, 0x72, 0x65, 0x63, 0x76, 0x6f, 0x6e, 0x6c, 0x79, 0xd, 0xa, 0x6d, 0x3d, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x20, 0x35, 0x30, 0x30, 0x34, 0x20, 0x52, 0x54, 0x50, 0x2f, 0x41, 0x56, 0x50, 0x20, 0x39, 0x36, 0xd, 0xa, 0x61, 0x3d, 0x72, 0x74, 0x70, 0x6d, 0x61, 0x70, 0x3a, 0x39, 0x36, 0x20, 0x4c, 0x32, 0x34, 0x2f, 0x34, 0x38, 0x30, 0x30, 0x30, 0x2f, 0x31, 0xd, 0xa, 0x61, 0x3d, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x3a, 0x31, 0xd, 0xa, 0x61, 0x3d, 0x74, 0x73, 0x2d, 0x72, 0x65, 0x66, 0x63, 0x6c, 0x6b, 0x3a, 0x70, 0x74, 0x70, 0x3d, 0x49, 0x45, 0x45, 0x45, 0x31, 0x35, 0x38, 0x38, 0x2d, 0x32, 0x30, 0x30, 0x38, 0x3a, 0x30, 0x30, 0x2d, 0x31, 0x44, 0x2d, 0x43, 0x31, 0x2d, 0x46, 0x46, 0x2d, 0x46, 0x45, 0x2d, 0x41, 0x31, 0x2d, 0x42, 0x38, 0x2d, 0x42, 0x43, 0x3a, 0x30, 0xd, 0xa, 0x61, 0x3d, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x63, 0x6c, 0x6b, 0x3a, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x3d, 0x30, 0xd, 0xa}; unsigned char sap_packet_2channels_data[] = {0x20, 0x0, 0x17, 0xcd, 0xa9, 0xfe, 0xbd, 0xb8, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x73, 0x64, 0x70, 0x0, 0x76, 0x3d, 0x30, 0xd, 0xa, 0x6f, 0x3d, 0x2d, 0x20, 0x35, 0x31, 0x37, 0x33, 0x32, 0x32, 0x20, 0x35, 0x31, 0x37, 0x33, 0x32, 0x32, 0x20, 0x49, 0x4e, 0x20, 0x49, 0x50, 0x34, 0x20, 0x31, 0x36, 0x39, 0x2e, 0x32, 0x35, 0x34, 0x2e, 0x31, 0x38, 0x39, 0x2e, 0x31, 0x38, 0x34, 0xd, 0xa, 0x73, 0x3d, 0x41, 0x56, 0x49, 0x4f, 0x55, 0x53, 0x42, 0x2d, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x20, 0x3a, 0x20, 0x32, 0xd, 0xa, 0x69, 0x3d, 0x32, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x3a, 0x20, 0x4c, 0x65, 0x66, 0x74, 0x2c, 0x20, 0x52, 0x69, 0x67, 0x68, 0x74, 0xd, 0xa, 0x63, 0x3d, 0x49, 0x4e, 0x20, 0x49, 0x50, 0x34, 0x20, 0x32, 0x33, 0x39, 0x2e, 0x36, 0x39, 0x2e, 0x32, 0x34, 0x37, 0x2e, 0x32, 0x35, 0x31, 0x2f, 0x33, 0x32, 0xd, 0xa, 0x74, 0x3d, 0x30, 0x20, 0x30, 0xd, 0xa, 0x61, 0x3d, 0x6b, 0x65, 0x79, 0x77, 0x64, 0x73, 0x3a, 0x44, 0x61, 0x6e, 0x74, 0x65, 0xd, 0xa, 0x61, 0x3d, 0x72, 0x65, 0x63, 0x76, 0x6f, 0x6e, 0x6c, 0x79, 0xd, 0xa, 0x6d, 0x3d, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x20, 0x35, 0x30, 0x30, 0x34, 0x20, 0x52, 0x54, 0x50, 0x2f, 0x41, 0x56, 0x50, 0x20, 0x39, 0x37, 0xd, 0xa, 0x61, 0x3d, 0x72, 0x74, 0x70, 0x6d, 0x61, 0x70, 0x3a, 0x39, 0x37, 0x20, 0x4c, 0x32, 0x34, 0x2f, 0x34, 0x38, 0x30, 0x30, 0x30, 0x2f, 0x32, 0xd, 0xa, 0x61, 0x3d, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x3a, 0x31, 0xd, 0xa, 0x61, 0x3d, 0x74, 0x73, 0x2d, 0x72, 0x65, 0x66, 0x63, 0x6c, 0x6b, 0x3a, 0x70, 0x74, 0x70, 0x3d, 0x49, 0x45, 0x45, 0x45, 0x31, 0x35, 0x38, 0x38, 0x2d, 0x32, 0x30, 0x30, 0x38, 0x3a, 0x30, 0x30, 0x2d, 0x31, 0x44, 0x2d, 0x43, 0x31, 0x2d, 0x46, 0x46, 0x2d, 0x46, 0x45, 0x2d, 0x41, 0x31, 0x2d, 0x42, 0x38, 0x2d, 0x42, 0x43, 0x3a, 0x30, 0xd, 0xa, 0x61, 0x3d, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x63, 0x6c, 0x6b, 0x3a, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x3d, 0x30, 0xd, 0xa}; unsigned char sap_packet_no_payload_type[] = {0x20, 0x0, 0x17, 0xcd, 0xa9, 0xfe, 0xbd, 0xb8, 0x76, 0x3d, 0x30, 0xd, 0xa, 0x6f, 0x3d, 0x2d, 0x20, 0x35, 0x31, 0x37, 0x33, 0x32, 0x32, 0x20, 0x35, 0x31, 0x37, 0x33, 0x32, 0x32, 0x20, 0x49, 0x4e, 0x20, 0x49, 0x50, 0x34, 0x20, 0x31, 0x36, 0x39, 0x2e, 0x32, 0x35, 0x34, 0x2e, 0x31, 0x38, 0x39, 0x2e, 0x31, 0x38, 0x34, 0xd, 0xa, 0x73, 0x3d, 0x41, 0x56, 0x49, 0x4f, 0x55, 0x53, 0x42, 0x2d, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x20, 0x3a, 0x20, 0x32, 0xd, 0xa, 0x69, 0x3d, 0x32, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x3a, 0x20, 0x4c, 0x65, 0x66, 0x74, 0x2c, 0x20, 0x52, 0x69, 0x67, 0x68, 0x74, 0xd, 0xa, 0x63, 0x3d, 0x49, 0x4e, 0x20, 0x49, 0x50, 0x34, 0x20, 0x32, 0x33, 0x39, 0x2e, 0x36, 0x39, 0x2e, 0x32, 0x34, 0x37, 0x2e, 0x32, 0x35, 0x31, 0x2f, 0x33, 0x32, 0xd, 0xa, 0x74, 0x3d, 0x30, 0x20, 0x30, 0xd, 0xa, 0x61, 0x3d, 0x6b, 0x65, 0x79, 0x77, 0x64, 0x73, 0x3a, 0x44, 0x61, 0x6e, 0x74, 0x65, 0xd, 0xa, 0x61, 0x3d, 0x72, 0x65, 0x63, 0x76, 0x6f, 0x6e, 0x6c, 0x79, 0xd, 0xa, 0x6d, 0x3d, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x20, 0x35, 0x30, 0x30, 0x34, 0x20, 0x52, 0x54, 0x50, 0x2f, 0x41, 0x56, 0x50, 0x20, 0x39, 0x37, 0xd, 0xa, 0x61, 0x3d, 0x72, 0x74, 0x70, 0x6d, 0x61, 0x70, 0x3a, 0x39, 0x37, 0x20, 0x4c, 0x32, 0x34, 0x2f, 0x34, 0x38, 0x30, 0x30, 0x30, 0x2f, 0x32, 0xd, 0xa, 0x61, 0x3d, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x3a, 0x31, 0xd, 0xa, 0x61, 0x3d, 0x74, 0x73, 0x2d, 0x72, 0x65, 0x66, 0x63, 0x6c, 0x6b, 0x3a, 0x70, 0x74, 0x70, 0x3d, 0x49, 0x45, 0x45, 0x45, 0x31, 0x35, 0x38, 0x38, 0x2d, 0x32, 0x30, 0x30, 0x38, 0x3a, 0x30, 0x30, 0x2d, 0x31, 0x44, 0x2d, 0x43, 0x31, 0x2d, 0x46, 0x46, 0x2d, 0x46, 0x45, 0x2d, 0x41, 0x31, 0x2d, 0x42, 0x38, 0x2d, 0x42, 0x43, 0x3a, 0x30, 0xd, 0xa, 0x61, 0x3d, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x63, 0x6c, 0x6b, 0x3a, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x3d, 0x30, 0xd, 0xa}; unsigned char sap_packet_2channels_deletion_data[] = {0x24, 0x0, 0x17, 0xcd, 0xa9, 0xfe, 0xbd, 0xb8, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x73, 0x64, 0x70, 0x0, 0x76, 0x3d, 0x30, 0xd, 0xa, 0x6f, 0x3d, 0x2d, 0x20, 0x35, 0x31, 0x37, 0x33, 0x32, 0x32, 0x20, 0x35, 0x31, 0x37, 0x33, 0x32, 0x32, 0x20, 0x49, 0x4e, 0x20, 0x49, 0x50, 0x34, 0x20, 0x31, 0x36, 0x39, 0x2e, 0x32, 0x35, 0x34, 0x2e, 0x31, 0x38, 0x39, 0x2e, 0x31, 0x38, 0x34, 0xd, 0xa, 0x73, 0x3d, 0x41, 0x56, 0x49, 0x4f, 0x55, 0x53, 0x42, 0x2d, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x20, 0x3a, 0x20, 0x32, 0xd, 0xa, 0x69, 0x3d, 0x32, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x3a, 0x20, 0x4c, 0x65, 0x66, 0x74, 0x2c, 0x20, 0x52, 0x69, 0x67, 0x68, 0x74, 0xd, 0xa, 0x63, 0x3d, 0x49, 0x4e, 0x20, 0x49, 0x50, 0x34, 0x20, 0x32, 0x33, 0x39, 0x2e, 0x36, 0x39, 0x2e, 0x32, 0x34, 0x37, 0x2e, 0x32, 0x35, 0x31, 0x2f, 0x33, 0x32, 0xd, 0xa, 0x74, 0x3d, 0x30, 0x20, 0x30, 0xd, 0xa, 0x61, 0x3d, 0x6b, 0x65, 0x79, 0x77, 0x64, 0x73, 0x3a, 0x44, 0x61, 0x6e, 0x74, 0x65, 0xd, 0xa, 0x61, 0x3d, 0x72, 0x65, 0x63, 0x76, 0x6f, 0x6e, 0x6c, 0x79, 0xd, 0xa, 0x6d, 0x3d, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x20, 0x35, 0x30, 0x30, 0x34, 0x20, 0x52, 0x54, 0x50, 0x2f, 0x41, 0x56, 0x50, 0x20, 0x39, 0x37, 0xd, 0xa, 0x61, 0x3d, 0x72, 0x74, 0x70, 0x6d, 0x61, 0x70, 0x3a, 0x39, 0x37, 0x20, 0x4c, 0x32, 0x34, 0x2f, 0x34, 0x38, 0x30, 0x30, 0x30, 0x2f, 0x32, 0xd, 0xa, 0x61, 0x3d, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x3a, 0x31, 0xd, 0xa, 0x61, 0x3d, 0x74, 0x73, 0x2d, 0x72, 0x65, 0x66, 0x63, 0x6c, 0x6b, 0x3a, 0x70, 0x74, 0x70, 0x3d, 0x49, 0x45, 0x45, 0x45, 0x31, 0x35, 0x38, 0x38, 0x2d, 0x32, 0x30, 0x30, 0x38, 0x3a, 0x30, 0x30, 0x2d, 0x31, 0x44, 0x2d, 0x43, 0x31, 0x2d, 0x46, 0x46, 0x2d, 0x46, 0x45, 0x2d, 0x41, 0x31, 0x2d, 0x42, 0x38, 0x2d, 0x42, 0x43, 0x3a, 0x30, 0xd, 0xa, 0x61, 0x3d, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x63, 0x6c, 0x6b, 0x3a, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x3d, 0x30, 0xd, 0xa}; unsigned char rtp_packet[] = {0x80, 0x60, 0xdc, 0xf2, 0x0, 0xd, 0x32, 0x93, 0xc8, 0x15, 0x45, 0x61, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; unsigned char rtp_packet_padding[] = {0xa0, 0x60, 0xdc, 0xf2, 0x0, 0xd, 0x32, 0x93, 0xc8, 0x15, 0x45, 0x61, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbb, 0x02}; //padding size > payload size unsigned char rtp_packet_padding_invalid[] = {0xa0, 0x60, 0xdc, 0xf2, 0x0, 0xd, 0x32, 0x93, 0xc8, 0x15, 0x45, 0x61, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbb, 0xff}; #define TEST_CASE(fun)\ do { \ int ret = fun(); \ if(ret){ \ printf(#fun " failed\n"); \ return ret; \ } \ } while(0) static int test_sap(){ Sap_packet_view sap = Sap_packet_view::from_buffer(sap_packet_data, sizeof(sap_packet_data)); ASSERT(sap.isValid()); ASSERT(!sap.isCompressed()); ASSERT(!sap.isEncrypted()); ASSERT(!sap.isIpv6()); ASSERT(!sap.isDeletion()); ASSERT_EQUAL("application/sdp", sap.payload_type); ASSERT_EQUAL(291, sap.payload.size()); return 0; } static int test_sap_with_auth_header(){ Sap_packet_view sap = Sap_packet_view::from_buffer(sap_packet_with_auth_data, sizeof(sap_packet_with_auth_data)); ASSERT(sap.isValid()); ASSERT(!sap.isCompressed()); ASSERT(!sap.isEncrypted()); ASSERT(!sap.isIpv6()); ASSERT(!sap.isDeletion()); ASSERT_EQUAL("application/sdp", sap.payload_type); ASSERT_EQUAL(291, sap.payload.size()); return 0; } static int test_sap_empty(){ Sap_packet_view sap = Sap_packet_view::from_buffer("", 0); ASSERT(!sap.isValid()); return 0; } static int test_sap_deletion_flag(){ Sap_packet_view sap = Sap_packet_view::from_buffer(sap_packet_2channels_deletion_data, sizeof(sap_packet_2channels_deletion_data)); ASSERT(sap.isValid()); ASSERT(sap.isDeletion()); ASSERT_EQUAL(298, sap.payload.size()); return 0; } static int test_sap_no_payload_type(){ Sap_packet_view sap = Sap_packet_view::from_buffer(sap_packet_no_payload_type, sizeof(sap_packet_no_payload_type)); ASSERT(sap.isValid()); ASSERT_EQUAL("application/sdp", sap.payload_type); ASSERT_EQUAL(298, sap.payload.size()); return 0; } static int test_sdp_empty(){ Sdp_view sdp = Sdp_view::from_buffer("", 0); ASSERT(!sdp.isValid()); return 0; } static int test_sdp_basic(){ Sap_packet_view sap = Sap_packet_view::from_buffer(sap_packet_no_payload_type, sizeof(sap_packet_no_payload_type)); Sdp_view sdp = Sdp_view::from_buffer(sap.payload.data(), sap.payload.size()); ASSERT(sdp.isValid()); ASSERT_EQUAL("-", sdp.username); ASSERT_EQUAL(517322, sdp.sess_id); ASSERT_EQUAL(517322, sdp.sess_version); ASSERT_EQUAL("IN", sdp.nettype); ASSERT_EQUAL("IP4", sdp.addrtype); ASSERT_EQUAL("169.254.189.184", sdp.unicast_addr); ASSERT_EQUAL("AVIOUSB-xxxxxx : 2", sdp.session_name); ASSERT_EQUAL(1, sdp.media.size()); ASSERT_EQUAL("", sdp.media[0].connection); ASSERT_EQUAL("IN IP4 239.69.247.251/32", sdp.connection); ASSERT_EQUAL("audio 5004 RTP/AVP 97", sdp.media[0].media_desc); ASSERT_EQUAL(4, sdp.media[0].attributes.size()); ASSERT_EQUAL("rtpmap", sdp.media[0].attributes[0].key); ASSERT_EQUAL("97 L24/48000/2", sdp.media[0].attributes[0].val); return 0; } static int test_rtp_basic(){ Rtp_pkt_view rtp = Rtp_pkt_view::from_buffer(rtp_packet, sizeof(rtp_packet)); ASSERT(rtp.isValid()); ASSERT(!rtp.marker); ASSERT_EQUAL(96, rtp.payload_type); ASSERT_EQUAL(56562, rtp.seq); ASSERT_EQUAL(864915, rtp.timestamp); ASSERT_EQUAL(0xc8154561, rtp.ssrc); ASSERT_EQUAL(0, rtp.csrc_count); ASSERT_EQUAL(144, rtp.data_len); return 0; } static int test_rtp_padding(){ Rtp_pkt_view rtp = Rtp_pkt_view::from_buffer(rtp_packet_padding, sizeof(rtp_packet_padding)); ASSERT(rtp.isValid()); ASSERT(!rtp.marker); ASSERT_EQUAL(96, rtp.payload_type); ASSERT_EQUAL(56562, rtp.seq); ASSERT_EQUAL(864915, rtp.timestamp); ASSERT_EQUAL(0xc8154561, rtp.ssrc); ASSERT_EQUAL(0, rtp.csrc_count); ASSERT_EQUAL(144, rtp.data_len); return 0; } static int test_rtp_padding_invalid(){ Rtp_pkt_view rtp = Rtp_pkt_view::from_buffer(rtp_packet_padding_invalid, sizeof(rtp_packet_padding_invalid)); ASSERT(!rtp.isValid()); return 0; } int test_sdp_parser(void){ TEST_CASE(test_sap); TEST_CASE(test_sap_empty); TEST_CASE(test_sap_deletion_flag); TEST_CASE(test_sap_with_auth_header); TEST_CASE(test_sap_no_payload_type); TEST_CASE(test_sdp_empty); TEST_CASE(test_sdp_basic); TEST_CASE(test_rtp_basic); TEST_CASE(test_rtp_padding); TEST_CASE(test_rtp_padding_invalid); return 0; }