| 880 | /* test 12: */ |
| 881 | { |
| 882 | /********************************************************************* |
| 883 | * Ticket #527: More lenient SDP negotiator. |
| 884 | */ |
| 885 | |
| 886 | "Ticket #527 scenario #1: Partial answer", |
| 887 | 1, |
| 888 | { |
| 889 | { |
| 890 | LOCAL_OFFER, |
| 891 | /* Alice sends offer audio and video: */ |
| 892 | "v=0\r\n" |
| 893 | "o=alice 2890844526 2890844526 IN IP4 host.atlanta.example.com\r\n" |
| 894 | "s=alice\r\n" |
| 895 | "c=IN IP4 host.atlanta.example.com\r\n" |
| 896 | "t=0 0\r\n" |
| 897 | "m=audio 49170 RTP/AVP 0\r\n" |
| 898 | "a=rtpmap:0 PCMU/8000\r\n" |
| 899 | "m=video 4000 RTP/AVP 31\r\n" |
| 900 | "a=rtpmap:31 H261/90000\r\n", |
| 901 | /* Receive Bob's answer only audio: */ |
| 902 | "v=0\r\n" |
| 903 | "o=bob 2808844564 2808844563 IN IP4 host.biloxi.example.com\r\n" |
| 904 | "s=bob\r\n" |
| 905 | "c=IN IP4 host.biloxi.example.com\r\n" |
| 906 | "t=0 0\r\n" |
| 907 | "m=audio 49170 RTP/AVP 0\r\n" |
| 908 | "a=rtpmap:0 PCMU/8000\r\n", |
| 909 | /* Alice's local SDP should be: */ |
| 910 | "v=0\r\n" |
| 911 | "o=alice 2890844526 2890844526 IN IP4 host.atlanta.example.com\r\n" |
| 912 | "s=alice\r\n" |
| 913 | "c=IN IP4 host.atlanta.example.com\r\n" |
| 914 | "t=0 0\r\n" |
| 915 | "m=audio 49170 RTP/AVP 0\r\n" |
| 916 | "a=rtpmap:0 PCMU/8000\r\n" |
| 917 | "m=video 0 RTP/AVP 31\r\n" |
| 918 | "a=rtpmap:31 H261/90000\r\n" |
| 919 | "", |
| 920 | } |
| 921 | } |
| 922 | }, |
| 923 | |
| 924 | /* test 13: */ |
| 925 | { |
| 926 | /********************************************************************* |
| 927 | * Ticket #527: More lenient SDP negotiator. |
| 928 | */ |
| 929 | |
| 930 | "Ticket #527 scenario #1: Media mismatch in answer", |
| 931 | 1, |
| 932 | { |
| 933 | { |
| 934 | LOCAL_OFFER, |
| 935 | /* Alice sends offer audio and video: */ |
| 936 | "v=0\r\n" |
| 937 | "o=alice 2890844526 2890844526 IN IP4 host.atlanta.example.com\r\n" |
| 938 | "s=alice\r\n" |
| 939 | "c=IN IP4 host.atlanta.example.com\r\n" |
| 940 | "t=0 0\r\n" |
| 941 | "m=audio 3000 RTP/AVP 0\r\n" |
| 942 | "a=rtpmap:0 PCMU/8000\r\n" |
| 943 | "m=video 4000 RTP/AVP 31\r\n" |
| 944 | "a=rtpmap:31 H261/90000\r\n", |
| 945 | /* Receive Bob's answer two audio: */ |
| 946 | "v=0\r\n" |
| 947 | "o=bob 2808844564 2808844563 IN IP4 host.biloxi.example.com\r\n" |
| 948 | "s=bob\r\n" |
| 949 | "c=IN IP4 host.biloxi.example.com\r\n" |
| 950 | "t=0 0\r\n" |
| 951 | "m=audio 49170 RTP/AVP 0\r\n" |
| 952 | "a=rtpmap:0 PCMU/8000\r\n" |
| 953 | "m=audio 49172 RTP/AVP 0\r\n" |
| 954 | "a=rtpmap:0 PCMU/8000\r\n", |
| 955 | /* Alice's local SDP should be: */ |
| 956 | "v=0\r\n" |
| 957 | "o=alice 2890844526 2890844526 IN IP4 host.atlanta.example.com\r\n" |
| 958 | "s=alice\r\n" |
| 959 | "c=IN IP4 host.atlanta.example.com\r\n" |
| 960 | "t=0 0\r\n" |
| 961 | "m=audio 3000 RTP/AVP 0\r\n" |
| 962 | "a=rtpmap:0 PCMU/8000\r\n" |
| 963 | "m=video 0 RTP/AVP 31\r\n" |
| 964 | "a=rtpmap:31 H261/90000\r\n" |
| 965 | "", |
| 966 | } |
| 967 | } |
| 968 | }, |
| 969 | |
| 970 | /* test 14: */ |
| 971 | { |
| 972 | /********************************************************************* |
| 973 | * Ticket #527: More lenient SDP negotiator. |
| 974 | */ |
| 975 | |
| 976 | "Ticket #527 scenario #2: Modify offer - partial streams", |
| 977 | 2, |
| 978 | { |
| 979 | { |
| 980 | LOCAL_OFFER, |
| 981 | /* Alice sends offer: */ |
| 982 | "v=0\r\n" |
| 983 | "o=alice 2890844526 2890844526 IN IP4 host.atlanta.example.com\r\n" |
| 984 | "s=alice\r\n" |
| 985 | "c=IN IP4 host.atlanta.example.com\r\n" |
| 986 | "t=0 0\r\n" |
| 987 | "m=audio 3000 RTP/AVP 0\r\n" |
| 988 | "a=rtpmap:0 PCMU/8000\r\n" |
| 989 | "m=audio 3100 RTP/AVP 0\r\n" |
| 990 | "a=rtpmap:0 PCMU/8000\r\n" |
| 991 | "m=video 3200 RTP/AVP 31\r\n" |
| 992 | "a=rtpmap:31 H261/90000\r\n" |
| 993 | "", |
| 994 | /* Receive Bob's answer: */ |
| 995 | "v=0\r\n" |
| 996 | "o=bob 2808844564 2808844563 IN IP4 host.biloxi.example.com\r\n" |
| 997 | "s=bob\r\n" |
| 998 | "c=IN IP4 host.biloxi.example.com\r\n" |
| 999 | "t=0 0\r\n" |
| 1000 | "m=audio 4000 RTP/AVP 0\r\n" |
| 1001 | "a=rtpmap:0 PCMU/8000\r\n" |
| 1002 | "m=audio 4100 RTP/AVP 0\r\n" |
| 1003 | "a=rtpmap:0 PCMU/8000\r\n" |
| 1004 | "m=video 4200 RTP/AVP 31\r\n" |
| 1005 | "a=rtpmap:31 H261/90000\r\n" |
| 1006 | "", |
| 1007 | /* Alice's local SDP should be: */ |
| 1008 | "v=0\r\n" |
| 1009 | "o=alice 2890844526 2890844526 IN IP4 host.atlanta.example.com\r\n" |
| 1010 | "s=alice\r\n" |
| 1011 | "c=IN IP4 host.atlanta.example.com\r\n" |
| 1012 | "t=0 0\r\n" |
| 1013 | "m=audio 3000 RTP/AVP 0\r\n" |
| 1014 | "a=rtpmap:0 PCMU/8000\r\n" |
| 1015 | "m=audio 3100 RTP/AVP 0\r\n" |
| 1016 | "a=rtpmap:0 PCMU/8000\r\n" |
| 1017 | "m=video 3200 RTP/AVP 31\r\n" |
| 1018 | "a=rtpmap:31 H261/90000\r\n" |
| 1019 | "", |
| 1020 | }, |
| 1021 | { |
| 1022 | LOCAL_OFFER, |
| 1023 | /* Alice modifies offer with only specify one audio: */ |
| 1024 | "v=0\r\n" |
| 1025 | "o=alice 2890844526 2890844526 IN IP4 host.atlanta.example.com\r\n" |
| 1026 | "s=alice\r\n" |
| 1027 | "c=IN IP4 host.atlanta.example.com\r\n" |
| 1028 | "t=0 0\r\n" |
| 1029 | "m=audio 5200 RTP/AVP 0\r\n" |
| 1030 | "a=rtpmap:0 PCMU/8000\r\n" |
| 1031 | "", |
| 1032 | /* Receive Bob's answer: */ |
| 1033 | "v=0\r\n" |
| 1034 | "o=bob 2808844564 2808844563 IN IP4 host.biloxi.example.com\r\n" |
| 1035 | "s=bob\r\n" |
| 1036 | "c=IN IP4 host.biloxi.example.com\r\n" |
| 1037 | "t=0 0\r\n" |
| 1038 | "m=audio 7000 RTP/AVP 0\r\n" |
| 1039 | "a=rtpmap:0 PCMU/8000\r\n" |
| 1040 | "m=audio 0 RTP/AVP 0\r\n" |
| 1041 | "a=rtpmap:0 PCMU/8000\r\n" |
| 1042 | "m=video 0 RTP/AVP 31\r\n" |
| 1043 | "a=rtpmap:31 H261/90000\r\n" |
| 1044 | "", |
| 1045 | /* Alice's local SDP should be: */ |
| 1046 | "v=0\r\n" |
| 1047 | "o=alice 2890844526 2890844527 IN IP4 host.atlanta.example.com\r\n" |
| 1048 | "s=alice\r\n" |
| 1049 | "c=IN IP4 host.atlanta.example.com\r\n" |
| 1050 | "t=0 0\r\n" |
| 1051 | "m=audio 5200 RTP/AVP 0\r\n" |
| 1052 | "a=rtpmap:0 PCMU/8000\r\n" |
| 1053 | "m=audio 0 RTP/AVP 0\r\n" |
| 1054 | "a=rtpmap:0 PCMU/8000\r\n" |
| 1055 | "m=video 0 RTP/AVP 31\r\n" |
| 1056 | "a=rtpmap:31 H261/90000\r\n" |
| 1057 | "", |
| 1058 | } |
| 1059 | } |
| 1060 | }, |
| 1061 | |
| 1062 | /* test 15: */ |
| 1063 | { |
| 1064 | /********************************************************************* |
| 1065 | * Ticket #527: More lenient SDP negotiator. |
| 1066 | */ |
| 1067 | |
| 1068 | "Ticket #527 scenario #2: Modify offer - unordered m= lines", |
| 1069 | 2, |
| 1070 | { |
| 1071 | { |
| 1072 | LOCAL_OFFER, |
| 1073 | /* Alice sends offer: */ |
| 1074 | "v=0\r\n" |
| 1075 | "o=alice 2890844526 2890844526 IN IP4 host.atlanta.example.com\r\n" |
| 1076 | "s=alice\r\n" |
| 1077 | "c=IN IP4 host.atlanta.example.com\r\n" |
| 1078 | "t=0 0\r\n" |
| 1079 | "m=audio 3000 RTP/AVP 0\r\n" |
| 1080 | "a=rtpmap:0 PCMU/8000\r\n" |
| 1081 | "m=video 3200 RTP/AVP 31\r\n" |
| 1082 | "a=rtpmap:31 H261/90000\r\n" |
| 1083 | "", |
| 1084 | /* Receive Bob's answer: */ |
| 1085 | "v=0\r\n" |
| 1086 | "o=bob 2808844564 2808844563 IN IP4 host.biloxi.example.com\r\n" |
| 1087 | "s=bob\r\n" |
| 1088 | "c=IN IP4 host.biloxi.example.com\r\n" |
| 1089 | "t=0 0\r\n" |
| 1090 | "m=audio 4000 RTP/AVP 0\r\n" |
| 1091 | "a=rtpmap:0 PCMU/8000\r\n" |
| 1092 | "m=video 4200 RTP/AVP 31\r\n" |
| 1093 | "a=rtpmap:31 H261/90000\r\n" |
| 1094 | "", |
| 1095 | /* Alice's local SDP should be: */ |
| 1096 | "v=0\r\n" |
| 1097 | "o=alice 2890844526 2890844526 IN IP4 host.atlanta.example.com\r\n" |
| 1098 | "s=alice\r\n" |
| 1099 | "c=IN IP4 host.atlanta.example.com\r\n" |
| 1100 | "t=0 0\r\n" |
| 1101 | "m=audio 3000 RTP/AVP 0\r\n" |
| 1102 | "a=rtpmap:0 PCMU/8000\r\n" |
| 1103 | "m=video 3200 RTP/AVP 31\r\n" |
| 1104 | "a=rtpmap:31 H261/90000\r\n" |
| 1105 | "", |
| 1106 | }, |
| 1107 | { |
| 1108 | LOCAL_OFFER, |
| 1109 | /* Alice modifies offer with unordered m= lines: */ |
| 1110 | "v=0\r\n" |
| 1111 | "o=alice 2890844526 2890844526 IN IP4 host.atlanta.example.com\r\n" |
| 1112 | "s=alice\r\n" |
| 1113 | "c=IN IP4 host.atlanta.example.com\r\n" |
| 1114 | "t=0 0\r\n" |
| 1115 | "m=video 5000 RTP/AVP 31\r\n" |
| 1116 | "a=rtpmap:31 H261/90000\r\n" |
| 1117 | "m=audio 5200 RTP/AVP 0\r\n" |
| 1118 | "a=rtpmap:0 PCMU/8000\r\n" |
| 1119 | "", |
| 1120 | /* Receive Bob's answer: */ |
| 1121 | "v=0\r\n" |
| 1122 | "o=bob 2808844564 2808844563 IN IP4 host.biloxi.example.com\r\n" |
| 1123 | "s=bob\r\n" |
| 1124 | "c=IN IP4 host.biloxi.example.com\r\n" |
| 1125 | "t=0 0\r\n" |
| 1126 | "m=audio 7000 RTP/AVP 0\r\n" |
| 1127 | "a=rtpmap:0 PCMU/8000\r\n" |
| 1128 | "m=video 2000 RTP/AVP 31\r\n" |
| 1129 | "a=rtpmap:31 H261/90000\r\n" |
| 1130 | "", |
| 1131 | /* Alice's local SDP should be: */ |
| 1132 | "v=0\r\n" |
| 1133 | "o=alice 2890844526 2890844527 IN IP4 host.atlanta.example.com\r\n" |
| 1134 | "s=alice\r\n" |
| 1135 | "c=IN IP4 host.atlanta.example.com\r\n" |
| 1136 | "t=0 0\r\n" |
| 1137 | "m=audio 5200 RTP/AVP 0\r\n" |
| 1138 | "a=rtpmap:0 PCMU/8000\r\n" |
| 1139 | "m=video 5000 RTP/AVP 31\r\n" |
| 1140 | "a=rtpmap:31 H261/90000\r\n" |
| 1141 | "", |
| 1142 | } |
| 1143 | } |
| 1144 | }, |
| 1145 | |
| 1146 | /* test 16: */ |
| 1147 | { |
| 1148 | /********************************************************************* |
| 1149 | * Ticket #527: More lenient SDP negotiator. |
| 1150 | */ |
| 1151 | |
| 1152 | "Ticket #527 scenario #2: Modify offer - partial & unordered streams", |
| 1153 | 2, |
| 1154 | { |
| 1155 | { |
| 1156 | LOCAL_OFFER, |
| 1157 | /* Alice sends offer: */ |
| 1158 | "v=0\r\n" |
| 1159 | "o=alice 2890844526 2890844526 IN IP4 host.atlanta.example.com\r\n" |
| 1160 | "s=alice\r\n" |
| 1161 | "c=IN IP4 host.atlanta.example.com\r\n" |
| 1162 | "t=0 0\r\n" |
| 1163 | "m=audio 3000 RTP/AVP 0\r\n" |
| 1164 | "a=rtpmap:0 PCMU/8000\r\n" |
| 1165 | "m=audio 3200 RTP/AVP 0\r\n" |
| 1166 | "a=rtpmap:0 PCMU/8000\r\n" |
| 1167 | "m=video 3400 RTP/AVP 31\r\n" |
| 1168 | "a=rtpmap:31 H261/90000\r\n" |
| 1169 | "", |
| 1170 | /* Receive Bob's answer: */ |
| 1171 | "v=0\r\n" |
| 1172 | "o=bob 2808844564 2808844563 IN IP4 host.biloxi.example.com\r\n" |
| 1173 | "s=bob\r\n" |
| 1174 | "c=IN IP4 host.biloxi.example.com\r\n" |
| 1175 | "t=0 0\r\n" |
| 1176 | "m=audio 4000 RTP/AVP 0\r\n" |
| 1177 | "a=rtpmap:0 PCMU/8000\r\n" |
| 1178 | "m=audio 4200 RTP/AVP 0\r\n" |
| 1179 | "a=rtpmap:0 PCMU/8000\r\n" |
| 1180 | "m=video 4400 RTP/AVP 31\r\n" |
| 1181 | "a=rtpmap:31 H261/90000\r\n" |
| 1182 | "", |
| 1183 | /* Alice's local SDP should be: */ |
| 1184 | "v=0\r\n" |
| 1185 | "o=alice 2890844526 2890844526 IN IP4 host.atlanta.example.com\r\n" |
| 1186 | "s=alice\r\n" |
| 1187 | "c=IN IP4 host.atlanta.example.com\r\n" |
| 1188 | "t=0 0\r\n" |
| 1189 | "m=audio 3000 RTP/AVP 0\r\n" |
| 1190 | "a=rtpmap:0 PCMU/8000\r\n" |
| 1191 | "m=audio 3200 RTP/AVP 0\r\n" |
| 1192 | "a=rtpmap:0 PCMU/8000\r\n" |
| 1193 | "m=video 3400 RTP/AVP 31\r\n" |
| 1194 | "a=rtpmap:31 H261/90000\r\n" |
| 1195 | "", |
| 1196 | }, |
| 1197 | { |
| 1198 | LOCAL_OFFER, |
| 1199 | /* Alice modifies offer by specifying partial and unordered media: */ |
| 1200 | "v=0\r\n" |
| 1201 | "o=alice 2890844526 2890844526 IN IP4 host.atlanta.example.com\r\n" |
| 1202 | "s=alice\r\n" |
| 1203 | "c=IN IP4 host.atlanta.example.com\r\n" |
| 1204 | "t=0 0\r\n" |
| 1205 | "m=video 5000 RTP/AVP 31\r\n" |
| 1206 | "a=rtpmap:31 H261/90000\r\n" |
| 1207 | "m=audio 7000 RTP/AVP 0\r\n" |
| 1208 | "a=rtpmap:0 PCMU/8000\r\n" |
| 1209 | "", |
| 1210 | /* Receive Bob's answer: */ |
| 1211 | "v=0\r\n" |
| 1212 | "o=bob 2808844564 2808844563 IN IP4 host.biloxi.example.com\r\n" |
| 1213 | "s=bob\r\n" |
| 1214 | "c=IN IP4 host.biloxi.example.com\r\n" |
| 1215 | "t=0 0\r\n" |
| 1216 | "m=audio 4000 RTP/AVP 0\r\n" |
| 1217 | "a=rtpmap:0 PCMU/8000\r\n" |
| 1218 | "m=audio 0 RTP/AVP 0\r\n" |
| 1219 | "a=rtpmap:0 PCMU/8000\r\n" |
| 1220 | "m=video 4400 RTP/AVP 31\r\n" |
| 1221 | "a=rtpmap:31 H261/90000\r\n" |
| 1222 | "", |
| 1223 | /* Alice's local SDP should be: */ |
| 1224 | "v=0\r\n" |
| 1225 | "o=alice 2890844526 2890844527 IN IP4 host.atlanta.example.com\r\n" |
| 1226 | "s=alice\r\n" |
| 1227 | "c=IN IP4 host.atlanta.example.com\r\n" |
| 1228 | "t=0 0\r\n" |
| 1229 | "m=audio 7000 RTP/AVP 0\r\n" |
| 1230 | "a=rtpmap:0 PCMU/8000\r\n" |
| 1231 | "m=audio 0 RTP/AVP 0\r\n" |
| 1232 | "a=rtpmap:0 PCMU/8000\r\n" |
| 1233 | "m=video 5000 RTP/AVP 31\r\n" |
| 1234 | "a=rtpmap:31 H261/90000\r\n" |
| 1235 | "", |
| 1236 | } |
| 1237 | } |
| 1238 | }, |
| 1239 | |