mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-04-29 08:15:44 +00:00
add speex
in order to access the experimental code in libsndfile have to have speex...
This commit is contained in:
parent
a745fc3757
commit
3889798818
249 changed files with 68055 additions and 4 deletions
2
Engine/lib/speex/doc/.cvsignore
Normal file
2
Engine/lib/speex/doc/.cvsignore
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
Makefile
|
||||
Makefile.in
|
||||
3
Engine/lib/speex/doc/Makefile.am
Normal file
3
Engine/lib/speex/doc/Makefile.am
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
doc_DATA = manual.pdf
|
||||
|
||||
EXTRA_DIST = $(doc_DATA)
|
||||
688
Engine/lib/speex/doc/celp_decoder.eps
Normal file
688
Engine/lib/speex/doc/celp_decoder.eps
Normal file
|
|
@ -0,0 +1,688 @@
|
|||
%!PS-Adobe-3.0 EPSF-3.0
|
||||
%%BoundingBox: 0 0 442 315
|
||||
%%Pages: 0
|
||||
%%Creator: Sun Microsystems, Inc.
|
||||
%%Title: none
|
||||
%%CreationDate: none
|
||||
%%LanguageLevel: 2
|
||||
%%EndComments
|
||||
%%BeginProlog
|
||||
%%BeginResource: SDRes
|
||||
/b4_inc_state save def
|
||||
/dict_count countdictstack def
|
||||
/op_count count 1 sub def
|
||||
userdict begin
|
||||
0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit[] 0 setdash newpath
|
||||
/languagelevel where {pop languagelevel 1 ne {false setstrokeadjust false setoverprint} if} if
|
||||
/bdef {bind def} bind def
|
||||
/c {setgray} bdef
|
||||
/l {neg lineto} bdef
|
||||
/rl {neg rlineto} bdef
|
||||
/lc {setlinecap} bdef
|
||||
/lj {setlinejoin} bdef
|
||||
/lw {setlinewidth} bdef
|
||||
/ml {setmiterlimit} bdef
|
||||
/ld {setdash} bdef
|
||||
/m {neg moveto} bdef
|
||||
/ct {6 2 roll neg 6 2 roll neg 6 2 roll neg curveto} bdef
|
||||
/r {rotate} bdef
|
||||
/t {neg translate} bdef
|
||||
/s {scale} bdef
|
||||
/sw {show} bdef
|
||||
/gs {gsave} bdef
|
||||
/gr {grestore} bdef
|
||||
/f {findfont dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def
|
||||
currentdict end /NFont exch definefont pop /NFont findfont} bdef
|
||||
/p {closepath} bdef
|
||||
/sf {scalefont setfont} bdef
|
||||
/ef {eofill}bdef
|
||||
/pc {closepath stroke}bdef
|
||||
/ps {stroke}bdef
|
||||
/pum {matrix currentmatrix}bdef
|
||||
/pom {setmatrix}bdef
|
||||
/bs {/aString exch def /nXOfs exch def /nWidth exch def currentpoint nXOfs 0 rmoveto pum nWidth aString stringwidth pop div 1 scale aString show pom moveto} bdef
|
||||
%%EndResource
|
||||
%%EndProlog
|
||||
%%BeginSetup
|
||||
%%EndSetup
|
||||
%%Page: 1 1
|
||||
%%BeginPageSetup
|
||||
%%EndPageSetup
|
||||
pum
|
||||
0.02836 0.02834 s
|
||||
0 -11113 t
|
||||
/tm matrix currentmatrix def
|
||||
tm setmatrix
|
||||
-5152 -9418 t
|
||||
1 1 s
|
||||
0 lw 1 lj 0.000 c 6935 14318 m 5435 14318 l 5435 10318 l 8435 10318 l
|
||||
8435 14318 l 6935 14318 l pc
|
||||
11436 12317 m 10934 12818 l 10936 11817 l 11436 12317 l pc
|
||||
5831 11966 m 8109 11966 l ps
|
||||
6425 11966 m 6425 11636 l ps
|
||||
6123 11966 m 6123 12366 l ps
|
||||
6727 11966 m 6727 11707 l ps
|
||||
7719 11966 m 7719 11872 l ps
|
||||
7070 11966 m 7070 12248 l ps
|
||||
7439 11966 m 7439 11636 l ps
|
||||
5830 10920 m 8108 10920 l ps
|
||||
6163 10920 m 6163 10590 l ps
|
||||
6470 10920 m 6470 11320 l ps
|
||||
6726 10920 m 6726 10661 l ps
|
||||
7109 10920 m 7109 10826 l ps
|
||||
7417 10920 m 7417 11202 l ps
|
||||
7699 10920 m 7699 10590 l ps
|
||||
5831 10921 m 8109 10921 l ps
|
||||
6164 10921 m 6164 10591 l ps
|
||||
6471 10921 m 6471 11321 l ps
|
||||
6727 10921 m 6727 10662 l ps
|
||||
7110 10921 m 7110 10827 l ps
|
||||
7418 10921 m 7418 11203 l ps
|
||||
7700 10921 m 7700 10591 l ps
|
||||
5857 12918 m 8135 12918 l ps
|
||||
6190 12918 m 6188 12729 l ps
|
||||
6497 12918 m 6497 13318 l ps
|
||||
6753 12918 m 6751 13247 l ps
|
||||
7136 12918 m 7136 12824 l ps
|
||||
7444 12918 m 7442 12611 l ps
|
||||
7796 12919 m 7794 13248 l ps
|
||||
6935 17818 m 5435 17818 l 5435 15818 l 8435 15818 l 8435 17818 l 6935 17818 l
|
||||
pc
|
||||
gs
|
||||
pum
|
||||
6263 17039 t
|
||||
219 -104 m 214 -66 184 -39 147 -39 ct 120 -39 99 -51 85 -74 ct 74 -92 71 -110 69 -147 ct
|
||||
268 -147 l 266 -213 260 -244 245 -277 ct 224 -321 193 -341 149 -341 ct 71 -341 20 -271 20 -160 ct
|
||||
20 -55 68 9 146 9 ct 208 9 252 -32 264 -104 ct 219 -104 l p
|
||||
69 -192 m 72 -252 104 -292 147 -292 ct 171 -292 191 -280 203 -260 ct 214 -243 218 -226 220 -192 ct
|
||||
69 -192 l p ef
|
||||
362 -412 m 418 -412 l 418 -458 l 321 -458 l 321 124 l 418 124 l 418 78 l
|
||||
362 78 l 362 -412 l p ef
|
||||
508 -332 m 465 -332 l 465 0 l 511 0 l 511 -180 l 511 -250 539 -292 586 -292 ct
|
||||
625 -292 642 -265 642 -204 ct 642 0 l 687 0 l 687 -226 l 687 -299 653 -341 595 -341 ct
|
||||
558 -341 532 -324 508 -283 ct 508 -332 l p ef
|
||||
870 -204 m 742 -204 l 742 -147 l 870 -147 l 870 -204 l p ef
|
||||
899 -400 m 1026 -400 l 1026 0 l 1077 0 l 1077 -400 l 1204 -400 l
|
||||
1204 -455 l 899 -455 l 899 -400 l p ef
|
||||
1281 78 m 1225 78 l 1225 124 l 1322 124 l 1322 -458 l 1225 -458 l
|
||||
1225 -412 l 1281 -412 l 1281 78 l p ef
|
||||
pom
|
||||
gr
|
||||
10410 12492 m 10410 12142 l 10935 12317 l 10410 12492 l p ef
|
||||
1 lw 0 lj 8435 12318 m 9685 12318 l 9685 12317 l 10515 12317 l ps
|
||||
0 lw 1 lj 11434 16817 m 10932 17318 l 10934 16317 l 11434 16817 l pc
|
||||
10483 16967 m 10483 16667 l 10933 16817 l 10483 16967 l p ef
|
||||
1 lw 0 lj 8435 16818 m 9684 16818 l 9684 16817 l 10573 16817 l ps
|
||||
0 lw 1 lj 13085 14818 m 12947 14818 12835 14706 12835 14568 ct 12835 14430 12947 14318 13085 14318 ct
|
||||
13223 14318 13335 14430 13335 14568 ct 13335 14706 13223 14818 13085 14818 ct
|
||||
pc
|
||||
gs
|
||||
pum
|
||||
12931 14791 t
|
||||
133 -183 m 20 -183 l 20 -137 l 133 -137 l 133 0 l 171 0 l 171 -137 l
|
||||
283 -137 l 283 -183 l 171 -183 l 171 -320 l 133 -320 l 133 -183 l
|
||||
p ef
|
||||
pom
|
||||
gr
|
||||
13234 15268 m 12934 15268 l 13084 14818 l 13234 15268 l p ef
|
||||
1 lw 0 lj 11435 16817 m 13084 16817 l 13084 15178 l ps
|
||||
12934 13868 m 13234 13868 l 13084 14318 l 12934 13868 l p ef
|
||||
11437 12317 m 13084 12317 l 13084 13958 l ps
|
||||
0 lw 1 lj 17835 15318 m 16335 15318 l 16335 13818 l 19335 13818 l 19335 15318 l
|
||||
17835 15318 l pc
|
||||
16668 15023 m 16778 14801 16891 14569 16925 14316 ct 16997 13766 17307 14273 17221 14551 ct
|
||||
17165 14731 17523 15058 17694 14622 ct 17856 14213 18050 14912 18286 15000 ct
|
||||
18489 15075 18680 14999 18878 15000 ct 18878 15000 18878 15000 19076 15047 ct
|
||||
19076 15047 19076 15047 19135 15118 ct ps
|
||||
15885 14718 m 15885 14418 l 16335 14568 l 15885 14718 l p ef
|
||||
1 lw 0 lj 13335 14567 m 14935 14567 l 14935 14568 l 15975 14568 l ps
|
||||
gs
|
||||
pum
|
||||
17085 13052 t
|
||||
208 -214 m 206 -241 203 -254 195 -269 ct 180 -296 151 -311 114 -311 ct 84 -311 61 -302 46 -283 ct
|
||||
33 -266 25 -243 25 -219 ct 25 -180 43 -156 78 -146 ct 129 -131 l 170 -120 182 -108 182 -79 ct
|
||||
182 -46 158 -27 118 -27 ct 90 -27 69 -37 58 -56 ct 51 -68 49 -78 48 -98 ct 16 -98 l
|
||||
17 -65 22 -48 35 -30 ct 54 -3 78 8 116 8 ct 177 8 214 -26 214 -83 ct 214 -126 195 -154 158 -164 ct
|
||||
87 -184 l 67 -190 57 -202 57 -224 ct 57 -257 78 -276 114 -276 ct 137 -276 156 -267 166 -250 ct
|
||||
172 -240 175 -231 176 -214 ct 208 -214 l p ef
|
||||
319 -39 m 271 -221 l 236 -221 l 304 5 l 300 16 297 25 296 28 ct 289 51 284 57 271 57 ct
|
||||
265 57 259 55 253 53 ct 253 87 l 255 87 l 261 90 263 90 268 90 ct 304 90 309 83 337 -4 ct
|
||||
402 -221 l 368 -221 l 319 -39 l p ef
|
||||
457 -221 m 428 -221 l 428 0 l 458 0 l 458 -120 l 458 -166 477 -194 508 -194 ct
|
||||
534 -194 546 -176 546 -136 ct 546 0 l 576 0 l 576 -150 l 576 -199 553 -227 515 -227 ct
|
||||
490 -227 472 -216 457 -188 ct 457 -221 l p ef
|
||||
690 -190 m 690 -221 l 660 -221 l 660 -282 l 630 -282 l 630 -221 l
|
||||
605 -221 l 605 -190 l 630 -190 l 630 -44 l 630 -12 641 2 665 2 ct 667 2 669 2 676 1 ct
|
||||
678 1 683 0 689 0 ct 689 -29 l 679 -29 l 665 -29 660 -34 660 -46 ct 660 -190 l
|
||||
690 -190 l p ef
|
||||
751 -303 m 721 -303 l 721 0 l 751 0 l 751 -120 l 751 -167 770 -194 803 -194 ct
|
||||
828 -194 839 -179 839 -144 ct 839 0 l 869 0 l 869 -150 l 869 -199 846 -227 808 -227 ct
|
||||
784 -227 769 -218 751 -190 ct 751 -303 l p ef
|
||||
1038 -69 m 1035 -44 1015 -26 991 -26 ct 973 -26 958 -34 950 -49 ct 942 -61 940 -73 939 -98 ct
|
||||
1071 -98 l 1070 -142 1066 -162 1056 -184 ct 1042 -214 1022 -227 992 -227 ct
|
||||
940 -227 906 -180 906 -106 ct 906 -36 938 6 990 6 ct 1032 6 1061 -21 1069 -69 ct
|
||||
1038 -69 l p
|
||||
939 -128 m 941 -167 962 -194 991 -194 ct 1007 -194 1020 -186 1028 -173 ct 1035 -162 1038 -151 1040 -128 ct
|
||||
939 -128 l p ef
|
||||
1242 -158 m 1240 -202 1215 -227 1174 -227 ct 1132 -227 1104 -200 1104 -157 ct
|
||||
1104 -129 1118 -111 1146 -103 ct 1182 -92 l 1210 -84 1218 -77 1218 -60 ct 1218 -39 1202 -26 1175 -26 ct
|
||||
1144 -26 1130 -39 1128 -71 ct 1099 -71 l 1100 -49 1102 -38 1108 -27 ct 1120 -5 1143 6 1173 6 ct
|
||||
1219 6 1248 -22 1248 -66 ct 1248 -97 1234 -113 1197 -125 ct 1167 -134 l 1140 -142 1134 -148 1134 -163 ct
|
||||
1134 -183 1148 -195 1172 -195 ct 1198 -195 1211 -183 1213 -158 ct 1242 -158 l
|
||||
p ef
|
||||
1315 -221 m 1285 -221 l 1285 0 l 1315 0 l 1315 -221 l p
|
||||
1315 -261 m 1315 -303 l 1285 -303 l 1285 -261 l 1315 -261 l p ef
|
||||
1492 -158 m 1490 -202 1465 -227 1424 -227 ct 1382 -227 1354 -200 1354 -157 ct
|
||||
1354 -129 1368 -111 1396 -103 ct 1432 -92 l 1460 -84 1468 -77 1468 -60 ct 1468 -39 1452 -26 1425 -26 ct
|
||||
1394 -26 1380 -39 1378 -71 ct 1349 -71 l 1350 -49 1352 -38 1358 -27 ct 1370 -5 1393 6 1423 6 ct
|
||||
1469 6 1498 -22 1498 -66 ct 1498 -97 1484 -113 1447 -125 ct 1417 -134 l 1390 -142 1384 -148 1384 -163 ct
|
||||
1384 -183 1398 -195 1422 -195 ct 1448 -195 1461 -183 1463 -158 ct 1492 -158 l
|
||||
p ef
|
||||
pom
|
||||
pum
|
||||
17085 13581 t
|
||||
90 -190 m 90 -221 l 60 -221 l 60 -248 l 60 -266 65 -274 78 -274 ct 81 -274 85 -274 90 -273 ct
|
||||
90 -307 l 81 -307 79 -307 76 -307 ct 46 -307 30 -291 30 -259 ct 30 -221 l 4 -221 l
|
||||
4 -190 l 30 -190 l 30 0 l 60 0 l 60 -190 l 90 -190 l p ef
|
||||
150 -221 m 120 -221 l 120 0 l 150 0 l 150 -221 l p
|
||||
150 -261 m 150 -303 l 120 -303 l 120 -261 l 150 -261 l p ef
|
||||
227 -303 m 197 -303 l 197 0 l 227 0 l 227 -303 l p ef
|
||||
339 -190 m 339 -221 l 309 -221 l 309 -282 l 279 -282 l 279 -221 l
|
||||
254 -221 l 254 -190 l 279 -190 l 279 -44 l 279 -12 290 2 314 2 ct 316 2 318 2 325 1 ct
|
||||
327 1 332 0 338 0 ct 338 -29 l 328 -29 l 314 -29 309 -34 309 -46 ct 309 -190 l
|
||||
339 -190 l p ef
|
||||
492 -69 m 489 -44 469 -26 445 -26 ct 427 -26 412 -34 404 -49 ct 396 -61 394 -73 393 -98 ct
|
||||
525 -98 l 524 -142 520 -162 510 -184 ct 496 -214 476 -227 446 -227 ct 394 -227 360 -180 360 -106 ct
|
||||
360 -36 392 6 444 6 ct 486 6 515 -21 523 -69 ct 492 -69 l p
|
||||
393 -128 m 395 -167 416 -194 445 -194 ct 461 -194 474 -186 482 -173 ct 489 -162 492 -151 494 -128 ct
|
||||
393 -128 l p ef
|
||||
657 -188 m 657 -226 l 654 -227 651 -227 649 -227 ct 627 -227 613 -215 597 -183 ct
|
||||
597 -221 l 568 -221 l 568 0 l 599 0 l 599 -129 l 599 -163 618 -188 645 -188 ct
|
||||
657 -188 l p ef
|
||||
878 -297 m 854 -297 l 844 -253 834 -244 789 -240 ct 789 -211 l 845 -211 l
|
||||
845 0 l 878 0 l 878 -297 l p ef
|
||||
1050 -311 m 1027 -311 l 943 8 l 965 8 l 1050 -311 l p ef
|
||||
1211 -88 m 1235 0 l 1272 0 l 1182 -303 l 1144 -303 l 1050 0 l 1085 0 l
|
||||
1111 -88 l 1211 -88 l p
|
||||
1121 -125 m 1161 -259 l 1199 -125 l 1121 -125 l p ef
|
||||
1360 -310 m 1316 -231 1301 -179 1301 -110 ct 1301 -42 1314 1 1361 87 ct 1381 87 l
|
||||
1343 -5 1334 -42 1334 -107 ct 1334 -182 1344 -225 1381 -310 ct 1360 -310 l p ef
|
||||
1552 -190 m 1552 -221 l 1412 -221 l 1412 -190 l 1513 -190 l 1403 -29 l
|
||||
1403 0 l 1555 0 l 1555 -30 l 1444 -30 l 1552 -190 l p ef
|
||||
1599 87 m 1642 8 1657 -43 1657 -111 ct 1657 -179 1644 -223 1598 -310 ct 1577 -310 l
|
||||
1616 -217 1625 -179 1625 -115 ct 1625 -40 1615 2 1578 87 ct 1599 87 l p ef
|
||||
pom
|
||||
gr
|
||||
gs
|
||||
pum
|
||||
5708 9956 t
|
||||
63 -137 m 185 -137 l 185 -174 l 63 -174 l 63 -266 l 202 -266 l 202 -303 l
|
||||
30 -303 l 30 0 l 63 0 l 63 -137 l p ef
|
||||
265 -221 m 235 -221 l 235 0 l 265 0 l 265 -221 l p
|
||||
265 -261 m 265 -303 l 235 -303 l 235 -261 l 265 -261 l p ef
|
||||
394 -113 m 455 -221 l 418 -221 l 375 -143 l 334 -221 l 294 -221 l
|
||||
355 -113 l 291 0 l 330 0 l 373 -83 l 419 0 l 458 0 l 394 -113 l
|
||||
p ef
|
||||
606 -69 m 603 -44 583 -26 559 -26 ct 541 -26 526 -34 518 -49 ct 510 -61 508 -73 507 -98 ct
|
||||
639 -98 l 638 -142 634 -162 624 -184 ct 610 -214 590 -227 560 -227 ct 508 -227 474 -180 474 -106 ct
|
||||
474 -36 506 6 558 6 ct 600 6 629 -21 637 -69 ct 606 -69 l p
|
||||
507 -128 m 509 -167 530 -194 559 -194 ct 575 -194 588 -186 596 -173 ct 603 -162 606 -151 608 -128 ct
|
||||
507 -128 l p ef
|
||||
829 -303 m 798 -303 l 798 -187 l 784 -216 768 -227 743 -227 ct 698 -227 668 -182 668 -115 ct
|
||||
668 -41 699 6 747 6 ct 772 6 787 -4 800 -31 ct 800 0 l 829 0 l 829 -303 l
|
||||
p
|
||||
749 -194 m 780 -194 798 -162 798 -104 ct 798 -76 793 -57 782 -43 ct 773 -32 761 -26 748 -26 ct
|
||||
717 -26 699 -58 699 -113 ct 699 -167 716 -194 749 -194 ct p ef
|
||||
1113 -146 m 1107 -200 1085 -227 1044 -227 ct 991 -227 958 -180 958 -106 ct
|
||||
958 -37 990 6 1039 6 ct 1081 6 1106 -22 1113 -78 ct 1083 -78 l 1077 -43 1062 -26 1039 -26 ct
|
||||
1008 -26 991 -56 991 -109 ct 991 -163 1009 -194 1041 -194 ct 1065 -194 1078 -180 1083 -146 ct
|
||||
1113 -146 l p ef
|
||||
1219 -227 m 1168 -227 1134 -180 1134 -110 ct 1134 -41 1168 5 1218 5 ct 1268 5 1302 -41 1302 -110 ct
|
||||
1302 -178 1268 -227 1219 -227 ct p
|
||||
1219 -195 m 1250 -195 1270 -161 1270 -110 ct 1270 -59 1250 -26 1218 -26 ct
|
||||
1186 -26 1165 -59 1165 -110 ct 1165 -162 1186 -195 1219 -195 ct p ef
|
||||
1490 -303 m 1459 -303 l 1459 -187 l 1445 -216 1429 -227 1404 -227 ct 1359 -227 1329 -182 1329 -115 ct
|
||||
1329 -41 1360 6 1408 6 ct 1433 6 1448 -4 1461 -31 ct 1461 0 l 1490 0 l 1490 -303 l
|
||||
p
|
||||
1410 -194 m 1441 -194 1459 -162 1459 -104 ct 1459 -76 1454 -57 1443 -43 ct
|
||||
1434 -32 1422 -26 1409 -26 ct 1378 -26 1360 -58 1360 -113 ct 1360 -167 1377 -194 1410 -194 ct
|
||||
p ef
|
||||
1656 -69 m 1653 -44 1633 -26 1609 -26 ct 1591 -26 1576 -34 1568 -49 ct 1560 -61 1558 -73 1557 -98 ct
|
||||
1689 -98 l 1688 -142 1684 -162 1674 -184 ct 1660 -214 1640 -227 1610 -227 ct
|
||||
1558 -227 1524 -180 1524 -106 ct 1524 -36 1556 6 1608 6 ct 1650 6 1679 -21 1687 -69 ct
|
||||
1656 -69 l p
|
||||
1557 -128 m 1559 -167 1580 -194 1609 -194 ct 1625 -194 1638 -186 1646 -173 ct
|
||||
1653 -162 1656 -151 1658 -128 ct 1557 -128 l p ef
|
||||
1755 0 m 1755 -28 l 1768 -3 1782 6 1806 6 ct 1854 6 1885 -41 1885 -115 ct
|
||||
1885 -182 1855 -227 1810 -227 ct 1788 -227 1772 -217 1756 -192 ct 1756 -303 l
|
||||
1726 -303 l 1726 0 l 1755 0 l p
|
||||
1805 -194 m 1837 -194 1853 -167 1853 -113 ct 1853 -58 1835 -26 1804 -26 ct
|
||||
1792 -26 1780 -32 1771 -43 ct 1760 -57 1755 -76 1755 -105 ct 1755 -163 1772 -194 1805 -194 ct
|
||||
p ef
|
||||
1998 -227 m 1947 -227 1913 -180 1913 -110 ct 1913 -41 1947 5 1997 5 ct 2047 5 2081 -41 2081 -110 ct
|
||||
2081 -178 2047 -227 1998 -227 ct p
|
||||
1998 -195 m 2029 -195 2049 -161 2049 -110 ct 2049 -59 2029 -26 1997 -26 ct
|
||||
1965 -26 1944 -59 1944 -110 ct 1944 -162 1965 -195 1998 -195 ct p ef
|
||||
2193 -227 m 2142 -227 2108 -180 2108 -110 ct 2108 -41 2142 5 2192 5 ct 2242 5 2276 -41 2276 -110 ct
|
||||
2276 -178 2242 -227 2193 -227 ct p
|
||||
2193 -195 m 2224 -195 2244 -161 2244 -110 ct 2244 -59 2224 -26 2192 -26 ct
|
||||
2160 -26 2139 -59 2139 -110 ct 2139 -162 2160 -195 2193 -195 ct p ef
|
||||
2390 -138 m 2459 -221 l 2421 -221 l 2342 -127 l 2342 -303 l 2313 -303 l
|
||||
2313 0 l 2342 0 l 2342 -83 l 2368 -111 l 2424 0 l 2463 0 l 2390 -138 l
|
||||
p ef
|
||||
pom
|
||||
gr
|
||||
gs
|
||||
pum
|
||||
5390 15539 t
|
||||
165 -88 m 189 0 l 226 0 l 136 -303 l 98 -303 l 4 0 l 39 0 l 65 -88 l
|
||||
165 -88 l p
|
||||
75 -125 m 115 -259 l 153 -125 l 75 -125 l p ef
|
||||
406 -303 m 375 -303 l 375 -187 l 361 -216 345 -227 320 -227 ct 275 -227 245 -182 245 -115 ct
|
||||
245 -41 276 6 324 6 ct 349 6 364 -4 377 -31 ct 377 0 l 406 0 l 406 -303 l
|
||||
p
|
||||
326 -194 m 357 -194 375 -162 375 -104 ct 375 -76 370 -57 359 -43 ct 350 -32 338 -26 325 -26 ct
|
||||
294 -26 276 -58 276 -113 ct 276 -167 293 -194 326 -194 ct p ef
|
||||
477 -153 m 481 -184 493 -196 520 -196 ct 547 -196 562 -184 562 -159 ct 562 -143 557 -136 546 -134 ct
|
||||
495 -126 l 460 -121 440 -96 440 -58 ct 440 -19 463 6 498 6 ct 524 6 543 -4 562 -29 ct
|
||||
565 -5 573 4 594 4 ct 598 4 602 3 608 1 ct 610 0 610 0 612 0 ct 612 -27 l 605 -25 603 -25 601 -25 ct
|
||||
595 -25 591 -30 591 -38 ct 591 -165 l 591 -204 565 -227 522 -227 ct 493 -227 472 -217 460 -198 ct
|
||||
453 -186 450 -175 449 -153 ct 477 -153 l p
|
||||
561 -76 m 561 -48 535 -24 504 -24 ct 484 -24 472 -38 472 -61 ct 472 -83 483 -94 511 -98 ct
|
||||
546 -104 554 -107 561 -112 ct 561 -76 l p ef
|
||||
642 87 m 672 87 l 672 -24 l 685 -2 699 6 722 6 ct 770 6 801 -42 801 -115 ct
|
||||
801 -182 771 -227 726 -227 ct 701 -227 687 -217 671 -188 ct 671 -221 l 642 -221 l
|
||||
642 87 l p
|
||||
721 -194 m 752 -194 769 -166 769 -114 ct 769 -58 751 -26 720 -26 ct 690 -26 671 -55 671 -103 ct
|
||||
671 -163 688 -194 721 -194 ct p ef
|
||||
906 -190 m 906 -221 l 876 -221 l 876 -282 l 846 -282 l 846 -221 l
|
||||
821 -221 l 821 -190 l 846 -190 l 846 -44 l 846 -12 857 2 881 2 ct 883 2 885 2 892 1 ct
|
||||
894 1 899 0 905 0 ct 905 -29 l 895 -29 l 881 -29 876 -34 876 -46 ct 876 -190 l
|
||||
906 -190 l p ef
|
||||
967 -221 m 937 -221 l 937 0 l 967 0 l 967 -221 l p
|
||||
967 -261 m 967 -303 l 937 -303 l 937 -261 l 967 -261 l p ef
|
||||
1076 -39 m 1029 -221 l 993 -221 l 1059 0 l 1092 0 l 1161 -221 l 1128 -221 l
|
||||
1076 -39 l p ef
|
||||
1309 -69 m 1306 -44 1286 -26 1262 -26 ct 1244 -26 1229 -34 1221 -49 ct 1213 -61 1211 -73 1210 -98 ct
|
||||
1342 -98 l 1341 -142 1337 -162 1327 -184 ct 1313 -214 1293 -227 1263 -227 ct
|
||||
1211 -227 1177 -180 1177 -106 ct 1177 -36 1209 6 1261 6 ct 1303 6 1332 -21 1340 -69 ct
|
||||
1309 -69 l p
|
||||
1210 -128 m 1212 -167 1233 -194 1262 -194 ct 1278 -194 1291 -186 1299 -173 ct
|
||||
1306 -162 1309 -151 1311 -128 ct 1210 -128 l p ef
|
||||
1621 -146 m 1615 -200 1593 -227 1552 -227 ct 1499 -227 1466 -180 1466 -106 ct
|
||||
1466 -37 1498 6 1547 6 ct 1589 6 1614 -22 1621 -78 ct 1591 -78 l 1585 -43 1570 -26 1547 -26 ct
|
||||
1516 -26 1499 -56 1499 -109 ct 1499 -163 1517 -194 1549 -194 ct 1573 -194 1586 -180 1591 -146 ct
|
||||
1621 -146 l p ef
|
||||
1727 -227 m 1676 -227 1642 -180 1642 -110 ct 1642 -41 1676 5 1726 5 ct 1776 5 1810 -41 1810 -110 ct
|
||||
1810 -178 1776 -227 1727 -227 ct p
|
||||
1727 -195 m 1758 -195 1778 -161 1778 -110 ct 1778 -59 1758 -26 1726 -26 ct
|
||||
1694 -26 1673 -59 1673 -110 ct 1673 -162 1694 -195 1727 -195 ct p ef
|
||||
1998 -303 m 1967 -303 l 1967 -187 l 1953 -216 1937 -227 1912 -227 ct 1867 -227 1837 -182 1837 -115 ct
|
||||
1837 -41 1868 6 1916 6 ct 1941 6 1956 -4 1969 -31 ct 1969 0 l 1998 0 l 1998 -303 l
|
||||
p
|
||||
1918 -194 m 1949 -194 1967 -162 1967 -104 ct 1967 -76 1962 -57 1951 -43 ct
|
||||
1942 -32 1930 -26 1917 -26 ct 1886 -26 1868 -58 1868 -113 ct 1868 -167 1885 -194 1918 -194 ct
|
||||
p ef
|
||||
2164 -69 m 2161 -44 2141 -26 2117 -26 ct 2099 -26 2084 -34 2076 -49 ct 2068 -61 2066 -73 2065 -98 ct
|
||||
2197 -98 l 2196 -142 2192 -162 2182 -184 ct 2168 -214 2148 -227 2118 -227 ct
|
||||
2066 -227 2032 -180 2032 -106 ct 2032 -36 2064 6 2116 6 ct 2158 6 2187 -21 2195 -69 ct
|
||||
2164 -69 l p
|
||||
2065 -128 m 2067 -167 2088 -194 2117 -194 ct 2133 -194 2146 -186 2154 -173 ct
|
||||
2161 -162 2164 -151 2166 -128 ct 2065 -128 l p ef
|
||||
2263 0 m 2263 -28 l 2276 -3 2290 6 2314 6 ct 2362 6 2393 -41 2393 -115 ct
|
||||
2393 -182 2363 -227 2318 -227 ct 2296 -227 2280 -217 2264 -192 ct 2264 -303 l
|
||||
2234 -303 l 2234 0 l 2263 0 l p
|
||||
2313 -194 m 2345 -194 2361 -167 2361 -113 ct 2361 -58 2343 -26 2312 -26 ct
|
||||
2300 -26 2288 -32 2279 -43 ct 2268 -57 2263 -76 2263 -105 ct 2263 -163 2280 -194 2313 -194 ct
|
||||
p ef
|
||||
2506 -227 m 2455 -227 2421 -180 2421 -110 ct 2421 -41 2455 5 2505 5 ct 2555 5 2589 -41 2589 -110 ct
|
||||
2589 -178 2555 -227 2506 -227 ct p
|
||||
2506 -195 m 2537 -195 2557 -161 2557 -110 ct 2557 -59 2537 -26 2505 -26 ct
|
||||
2473 -26 2452 -59 2452 -110 ct 2452 -162 2473 -195 2506 -195 ct p ef
|
||||
2701 -227 m 2650 -227 2616 -180 2616 -110 ct 2616 -41 2650 5 2700 5 ct 2750 5 2784 -41 2784 -110 ct
|
||||
2784 -178 2750 -227 2701 -227 ct p
|
||||
2701 -195 m 2732 -195 2752 -161 2752 -110 ct 2752 -59 2732 -26 2700 -26 ct
|
||||
2668 -26 2647 -59 2647 -110 ct 2647 -162 2668 -195 2701 -195 ct p ef
|
||||
2898 -138 m 2967 -221 l 2929 -221 l 2850 -127 l 2850 -303 l 2821 -303 l
|
||||
2821 0 l 2850 0 l 2850 -83 l 2876 -111 l 2932 0 l 2971 0 l 2898 -138 l
|
||||
p ef
|
||||
pom
|
||||
gr
|
||||
gs
|
||||
pum
|
||||
14016 13846 t
|
||||
213 -36 m 63 -36 l 63 -137 l 199 -137 l 199 -174 l 63 -174 l 63 -266 l
|
||||
211 -266 l 211 -303 l 30 -303 l 30 0 l 213 0 l 213 -36 l p ef
|
||||
339 -113 m 400 -221 l 363 -221 l 320 -143 l 279 -221 l 239 -221 l
|
||||
300 -113 l 236 0 l 275 0 l 318 -83 l 364 0 l 403 0 l 339 -113 l
|
||||
p ef
|
||||
571 -146 m 565 -200 543 -227 502 -227 ct 449 -227 416 -180 416 -106 ct 416 -37 448 6 497 6 ct
|
||||
539 6 564 -22 571 -78 ct 541 -78 l 535 -43 520 -26 497 -26 ct 466 -26 449 -56 449 -109 ct
|
||||
449 -163 467 -194 499 -194 ct 523 -194 536 -180 541 -146 ct 571 -146 l p ef
|
||||
633 -221 m 603 -221 l 603 0 l 633 0 l 633 -221 l p
|
||||
633 -261 m 633 -303 l 603 -303 l 603 -261 l 633 -261 l p ef
|
||||
745 -190 m 745 -221 l 715 -221 l 715 -282 l 685 -282 l 685 -221 l
|
||||
660 -221 l 660 -190 l 685 -190 l 685 -44 l 685 -12 696 2 720 2 ct 722 2 724 2 731 1 ct
|
||||
733 1 738 0 744 0 ct 744 -29 l 734 -29 l 720 -29 715 -34 715 -46 ct 715 -190 l
|
||||
745 -190 l p ef
|
||||
803 -153 m 807 -184 819 -196 846 -196 ct 873 -196 888 -184 888 -159 ct 888 -143 883 -136 872 -134 ct
|
||||
821 -126 l 786 -121 766 -96 766 -58 ct 766 -19 789 6 824 6 ct 850 6 869 -4 888 -29 ct
|
||||
891 -5 899 4 920 4 ct 924 4 928 3 934 1 ct 936 0 936 0 938 0 ct 938 -27 l 931 -25 929 -25 927 -25 ct
|
||||
921 -25 917 -30 917 -38 ct 917 -165 l 917 -204 891 -227 848 -227 ct 819 -227 798 -217 786 -198 ct
|
||||
779 -186 776 -175 775 -153 ct 803 -153 l p
|
||||
887 -76 m 887 -48 861 -24 830 -24 ct 810 -24 798 -38 798 -61 ct 798 -83 809 -94 837 -98 ct
|
||||
872 -104 880 -107 887 -112 ct 887 -76 l p ef
|
||||
1037 -190 m 1037 -221 l 1007 -221 l 1007 -282 l 977 -282 l 977 -221 l
|
||||
952 -221 l 952 -190 l 977 -190 l 977 -44 l 977 -12 988 2 1012 2 ct 1014 2 1016 2 1023 1 ct
|
||||
1025 1 1030 0 1036 0 ct 1036 -29 l 1026 -29 l 1012 -29 1007 -34 1007 -46 ct
|
||||
1007 -190 l 1037 -190 l p ef
|
||||
1099 -221 m 1069 -221 l 1069 0 l 1099 0 l 1099 -221 l p
|
||||
1099 -261 m 1099 -303 l 1069 -303 l 1069 -261 l 1099 -261 l p ef
|
||||
1219 -227 m 1168 -227 1134 -180 1134 -110 ct 1134 -41 1168 5 1218 5 ct 1268 5 1302 -41 1302 -110 ct
|
||||
1302 -178 1268 -227 1219 -227 ct p
|
||||
1219 -195 m 1250 -195 1270 -161 1270 -110 ct 1270 -59 1250 -26 1218 -26 ct
|
||||
1186 -26 1165 -59 1165 -110 ct 1165 -162 1186 -195 1219 -195 ct p ef
|
||||
1368 -221 m 1339 -221 l 1339 0 l 1369 0 l 1369 -120 l 1369 -166 1388 -194 1419 -194 ct
|
||||
1445 -194 1457 -176 1457 -136 ct 1457 0 l 1487 0 l 1487 -150 l 1487 -199 1464 -227 1426 -227 ct
|
||||
1401 -227 1383 -216 1368 -188 ct 1368 -221 l p ef
|
||||
pom
|
||||
pum
|
||||
14480 14375 t
|
||||
145 -69 m 142 -44 122 -26 98 -26 ct 80 -26 65 -34 57 -49 ct 49 -61 47 -73 46 -98 ct
|
||||
178 -98 l 177 -142 173 -162 163 -184 ct 149 -214 129 -227 99 -227 ct 47 -227 13 -180 13 -106 ct
|
||||
13 -36 45 6 97 6 ct 139 6 168 -21 176 -69 ct 145 -69 l p
|
||||
46 -128 m 48 -167 69 -194 98 -194 ct 114 -194 127 -186 135 -173 ct 142 -162 145 -151 147 -128 ct
|
||||
46 -128 l p ef
|
||||
244 -274 m 281 -274 l 281 -305 l 217 -305 l 217 82 l 281 82 l 281 52 l
|
||||
244 52 l 244 -274 l p ef
|
||||
343 -221 m 314 -221 l 314 0 l 344 0 l 344 -120 l 344 -166 363 -194 394 -194 ct
|
||||
420 -194 432 -176 432 -136 ct 432 0 l 462 0 l 462 -150 l 462 -199 439 -227 401 -227 ct
|
||||
376 -227 358 -216 343 -188 ct 343 -221 l p ef
|
||||
533 52 m 496 52 l 496 82 l 561 82 l 561 -305 l 496 -305 l 496 -274 l
|
||||
533 -274 l 533 52 l p ef
|
||||
pom
|
||||
gr
|
||||
gs
|
||||
pum
|
||||
9491 13237 t
|
||||
63 -137 m 185 -137 l 185 -174 l 63 -174 l 63 -266 l 202 -266 l 202 -303 l
|
||||
30 -303 l 30 0 l 63 0 l 63 -137 l p ef
|
||||
265 -221 m 235 -221 l 235 0 l 265 0 l 265 -221 l p
|
||||
265 -261 m 265 -303 l 235 -303 l 235 -261 l 265 -261 l p ef
|
||||
394 -113 m 455 -221 l 418 -221 l 375 -143 l 334 -221 l 294 -221 l
|
||||
355 -113 l 291 0 l 330 0 l 373 -83 l 419 0 l 458 0 l 394 -113 l
|
||||
p ef
|
||||
606 -69 m 603 -44 583 -26 559 -26 ct 541 -26 526 -34 518 -49 ct 510 -61 508 -73 507 -98 ct
|
||||
639 -98 l 638 -142 634 -162 624 -184 ct 610 -214 590 -227 560 -227 ct 508 -227 474 -180 474 -106 ct
|
||||
474 -36 506 6 558 6 ct 600 6 629 -21 637 -69 ct 606 -69 l p
|
||||
507 -128 m 509 -167 530 -194 559 -194 ct 575 -194 588 -186 596 -173 ct 603 -162 606 -151 608 -128 ct
|
||||
507 -128 l p ef
|
||||
829 -303 m 798 -303 l 798 -187 l 784 -216 768 -227 743 -227 ct 698 -227 668 -182 668 -115 ct
|
||||
668 -41 699 6 747 6 ct 772 6 787 -4 800 -31 ct 800 0 l 829 0 l 829 -303 l
|
||||
p
|
||||
749 -194 m 780 -194 798 -162 798 -104 ct 798 -76 793 -57 782 -43 ct 773 -32 761 -26 748 -26 ct
|
||||
717 -26 699 -58 699 -113 ct 699 -167 716 -194 749 -194 ct p ef
|
||||
1113 -146 m 1107 -200 1085 -227 1044 -227 ct 991 -227 958 -180 958 -106 ct
|
||||
958 -37 990 6 1039 6 ct 1081 6 1106 -22 1113 -78 ct 1083 -78 l 1077 -43 1062 -26 1039 -26 ct
|
||||
1008 -26 991 -56 991 -109 ct 991 -163 1009 -194 1041 -194 ct 1065 -194 1078 -180 1083 -146 ct
|
||||
1113 -146 l p ef
|
||||
1219 -227 m 1168 -227 1134 -180 1134 -110 ct 1134 -41 1168 5 1218 5 ct 1268 5 1302 -41 1302 -110 ct
|
||||
1302 -178 1268 -227 1219 -227 ct p
|
||||
1219 -195 m 1250 -195 1270 -161 1270 -110 ct 1270 -59 1250 -26 1218 -26 ct
|
||||
1186 -26 1165 -59 1165 -110 ct 1165 -162 1186 -195 1219 -195 ct p ef
|
||||
1490 -303 m 1459 -303 l 1459 -187 l 1445 -216 1429 -227 1404 -227 ct 1359 -227 1329 -182 1329 -115 ct
|
||||
1329 -41 1360 6 1408 6 ct 1433 6 1448 -4 1461 -31 ct 1461 0 l 1490 0 l 1490 -303 l
|
||||
p
|
||||
1410 -194 m 1441 -194 1459 -162 1459 -104 ct 1459 -76 1454 -57 1443 -43 ct
|
||||
1434 -32 1422 -26 1409 -26 ct 1378 -26 1360 -58 1360 -113 ct 1360 -167 1377 -194 1410 -194 ct
|
||||
p ef
|
||||
1656 -69 m 1653 -44 1633 -26 1609 -26 ct 1591 -26 1576 -34 1568 -49 ct 1560 -61 1558 -73 1557 -98 ct
|
||||
1689 -98 l 1688 -142 1684 -162 1674 -184 ct 1660 -214 1640 -227 1610 -227 ct
|
||||
1558 -227 1524 -180 1524 -106 ct 1524 -36 1556 6 1608 6 ct 1650 6 1679 -21 1687 -69 ct
|
||||
1656 -69 l p
|
||||
1557 -128 m 1559 -167 1580 -194 1609 -194 ct 1625 -194 1638 -186 1646 -173 ct
|
||||
1653 -162 1656 -151 1658 -128 ct 1557 -128 l p ef
|
||||
1755 0 m 1755 -28 l 1768 -3 1782 6 1806 6 ct 1854 6 1885 -41 1885 -115 ct
|
||||
1885 -182 1855 -227 1810 -227 ct 1788 -227 1772 -217 1756 -192 ct 1756 -303 l
|
||||
1726 -303 l 1726 0 l 1755 0 l p
|
||||
1805 -194 m 1837 -194 1853 -167 1853 -113 ct 1853 -58 1835 -26 1804 -26 ct
|
||||
1792 -26 1780 -32 1771 -43 ct 1760 -57 1755 -76 1755 -105 ct 1755 -163 1772 -194 1805 -194 ct
|
||||
p ef
|
||||
1998 -227 m 1947 -227 1913 -180 1913 -110 ct 1913 -41 1947 5 1997 5 ct 2047 5 2081 -41 2081 -110 ct
|
||||
2081 -178 2047 -227 1998 -227 ct p
|
||||
1998 -195 m 2029 -195 2049 -161 2049 -110 ct 2049 -59 2029 -26 1997 -26 ct
|
||||
1965 -26 1944 -59 1944 -110 ct 1944 -162 1965 -195 1998 -195 ct p ef
|
||||
2193 -227 m 2142 -227 2108 -180 2108 -110 ct 2108 -41 2142 5 2192 5 ct 2242 5 2276 -41 2276 -110 ct
|
||||
2276 -178 2242 -227 2193 -227 ct p
|
||||
2193 -195 m 2224 -195 2244 -161 2244 -110 ct 2244 -59 2224 -26 2192 -26 ct
|
||||
2160 -26 2139 -59 2139 -110 ct 2139 -162 2160 -195 2193 -195 ct p ef
|
||||
2390 -138 m 2459 -221 l 2421 -221 l 2342 -127 l 2342 -303 l 2313 -303 l
|
||||
2313 0 l 2342 0 l 2342 -83 l 2368 -111 l 2424 0 l 2463 0 l 2390 -138 l
|
||||
p ef
|
||||
2734 -221 m 2705 -221 l 2705 -188 l 2688 -217 2674 -227 2649 -227 ct 2604 -227 2574 -182 2574 -115 ct
|
||||
2574 -42 2606 6 2654 6 ct 2676 6 2691 -2 2703 -24 ct 2703 -15 l 2703 11 2701 25 2695 37 ct
|
||||
2687 54 2673 62 2651 62 ct 2628 62 2616 52 2610 27 ct 2580 27 l 2585 55 2591 68 2605 79 ct
|
||||
2617 88 2632 93 2650 93 ct 2681 93 2705 80 2719 57 ct 2729 39 2734 17 2734 -18 ct
|
||||
2734 -221 l p
|
||||
2656 -194 m 2687 -194 2704 -162 2704 -104 ct 2704 -55 2686 -26 2654 -26 ct
|
||||
2624 -26 2606 -58 2606 -113 ct 2606 -167 2623 -194 2656 -194 ct p ef
|
||||
2805 -153 m 2809 -184 2821 -196 2848 -196 ct 2875 -196 2890 -184 2890 -159 ct
|
||||
2890 -143 2885 -136 2874 -134 ct 2823 -126 l 2788 -121 2768 -96 2768 -58 ct
|
||||
2768 -19 2791 6 2826 6 ct 2852 6 2871 -4 2890 -29 ct 2893 -5 2901 4 2922 4 ct 2926 4 2930 3 2936 1 ct
|
||||
2938 0 2938 0 2940 0 ct 2940 -27 l 2933 -25 2931 -25 2929 -25 ct 2923 -25 2919 -30 2919 -38 ct
|
||||
2919 -165 l 2919 -204 2893 -227 2850 -227 ct 2821 -227 2800 -217 2788 -198 ct
|
||||
2781 -186 2778 -175 2777 -153 ct 2805 -153 l p
|
||||
2889 -76 m 2889 -48 2863 -24 2832 -24 ct 2812 -24 2800 -38 2800 -61 ct 2800 -83 2811 -94 2839 -98 ct
|
||||
2874 -104 2882 -107 2889 -112 ct 2889 -76 l p ef
|
||||
3004 -221 m 2974 -221 l 2974 0 l 3004 0 l 3004 -221 l p
|
||||
3004 -261 m 3004 -303 l 2974 -303 l 2974 -261 l 3004 -261 l p ef
|
||||
3078 -221 m 3049 -221 l 3049 0 l 3079 0 l 3079 -120 l 3079 -166 3098 -194 3129 -194 ct
|
||||
3155 -194 3167 -176 3167 -136 ct 3167 0 l 3197 0 l 3197 -150 l 3197 -199 3174 -227 3136 -227 ct
|
||||
3111 -227 3093 -216 3078 -188 ct 3078 -221 l p ef
|
||||
pom
|
||||
gr
|
||||
gs
|
||||
pum
|
||||
9174 17762 t
|
||||
165 -88 m 189 0 l 226 0 l 136 -303 l 98 -303 l 4 0 l 39 0 l 65 -88 l
|
||||
165 -88 l p
|
||||
75 -125 m 115 -259 l 153 -125 l 75 -125 l p ef
|
||||
406 -303 m 375 -303 l 375 -187 l 361 -216 345 -227 320 -227 ct 275 -227 245 -182 245 -115 ct
|
||||
245 -41 276 6 324 6 ct 349 6 364 -4 377 -31 ct 377 0 l 406 0 l 406 -303 l
|
||||
p
|
||||
326 -194 m 357 -194 375 -162 375 -104 ct 375 -76 370 -57 359 -43 ct 350 -32 338 -26 325 -26 ct
|
||||
294 -26 276 -58 276 -113 ct 276 -167 293 -194 326 -194 ct p ef
|
||||
477 -153 m 481 -184 493 -196 520 -196 ct 547 -196 562 -184 562 -159 ct 562 -143 557 -136 546 -134 ct
|
||||
495 -126 l 460 -121 440 -96 440 -58 ct 440 -19 463 6 498 6 ct 524 6 543 -4 562 -29 ct
|
||||
565 -5 573 4 594 4 ct 598 4 602 3 608 1 ct 610 0 610 0 612 0 ct 612 -27 l 605 -25 603 -25 601 -25 ct
|
||||
595 -25 591 -30 591 -38 ct 591 -165 l 591 -204 565 -227 522 -227 ct 493 -227 472 -217 460 -198 ct
|
||||
453 -186 450 -175 449 -153 ct 477 -153 l p
|
||||
561 -76 m 561 -48 535 -24 504 -24 ct 484 -24 472 -38 472 -61 ct 472 -83 483 -94 511 -98 ct
|
||||
546 -104 554 -107 561 -112 ct 561 -76 l p ef
|
||||
642 87 m 672 87 l 672 -24 l 685 -2 699 6 722 6 ct 770 6 801 -42 801 -115 ct
|
||||
801 -182 771 -227 726 -227 ct 701 -227 687 -217 671 -188 ct 671 -221 l 642 -221 l
|
||||
642 87 l p
|
||||
721 -194 m 752 -194 769 -166 769 -114 ct 769 -58 751 -26 720 -26 ct 690 -26 671 -55 671 -103 ct
|
||||
671 -163 688 -194 721 -194 ct p ef
|
||||
906 -190 m 906 -221 l 876 -221 l 876 -282 l 846 -282 l 846 -221 l
|
||||
821 -221 l 821 -190 l 846 -190 l 846 -44 l 846 -12 857 2 881 2 ct 883 2 885 2 892 1 ct
|
||||
894 1 899 0 905 0 ct 905 -29 l 895 -29 l 881 -29 876 -34 876 -46 ct 876 -190 l
|
||||
906 -190 l p ef
|
||||
967 -221 m 937 -221 l 937 0 l 967 0 l 967 -221 l p
|
||||
967 -261 m 967 -303 l 937 -303 l 937 -261 l 967 -261 l p ef
|
||||
1076 -39 m 1029 -221 l 993 -221 l 1059 0 l 1092 0 l 1161 -221 l 1128 -221 l
|
||||
1076 -39 l p ef
|
||||
1309 -69 m 1306 -44 1286 -26 1262 -26 ct 1244 -26 1229 -34 1221 -49 ct 1213 -61 1211 -73 1210 -98 ct
|
||||
1342 -98 l 1341 -142 1337 -162 1327 -184 ct 1313 -214 1293 -227 1263 -227 ct
|
||||
1211 -227 1177 -180 1177 -106 ct 1177 -36 1209 6 1261 6 ct 1303 6 1332 -21 1340 -69 ct
|
||||
1309 -69 l p
|
||||
1210 -128 m 1212 -167 1233 -194 1262 -194 ct 1278 -194 1291 -186 1299 -173 ct
|
||||
1306 -162 1309 -151 1311 -128 ct 1210 -128 l p ef
|
||||
1621 -146 m 1615 -200 1593 -227 1552 -227 ct 1499 -227 1466 -180 1466 -106 ct
|
||||
1466 -37 1498 6 1547 6 ct 1589 6 1614 -22 1621 -78 ct 1591 -78 l 1585 -43 1570 -26 1547 -26 ct
|
||||
1516 -26 1499 -56 1499 -109 ct 1499 -163 1517 -194 1549 -194 ct 1573 -194 1586 -180 1591 -146 ct
|
||||
1621 -146 l p ef
|
||||
1727 -227 m 1676 -227 1642 -180 1642 -110 ct 1642 -41 1676 5 1726 5 ct 1776 5 1810 -41 1810 -110 ct
|
||||
1810 -178 1776 -227 1727 -227 ct p
|
||||
1727 -195 m 1758 -195 1778 -161 1778 -110 ct 1778 -59 1758 -26 1726 -26 ct
|
||||
1694 -26 1673 -59 1673 -110 ct 1673 -162 1694 -195 1727 -195 ct p ef
|
||||
1998 -303 m 1967 -303 l 1967 -187 l 1953 -216 1937 -227 1912 -227 ct 1867 -227 1837 -182 1837 -115 ct
|
||||
1837 -41 1868 6 1916 6 ct 1941 6 1956 -4 1969 -31 ct 1969 0 l 1998 0 l 1998 -303 l
|
||||
p
|
||||
1918 -194 m 1949 -194 1967 -162 1967 -104 ct 1967 -76 1962 -57 1951 -43 ct
|
||||
1942 -32 1930 -26 1917 -26 ct 1886 -26 1868 -58 1868 -113 ct 1868 -167 1885 -194 1918 -194 ct
|
||||
p ef
|
||||
2164 -69 m 2161 -44 2141 -26 2117 -26 ct 2099 -26 2084 -34 2076 -49 ct 2068 -61 2066 -73 2065 -98 ct
|
||||
2197 -98 l 2196 -142 2192 -162 2182 -184 ct 2168 -214 2148 -227 2118 -227 ct
|
||||
2066 -227 2032 -180 2032 -106 ct 2032 -36 2064 6 2116 6 ct 2158 6 2187 -21 2195 -69 ct
|
||||
2164 -69 l p
|
||||
2065 -128 m 2067 -167 2088 -194 2117 -194 ct 2133 -194 2146 -186 2154 -173 ct
|
||||
2161 -162 2164 -151 2166 -128 ct 2065 -128 l p ef
|
||||
2263 0 m 2263 -28 l 2276 -3 2290 6 2314 6 ct 2362 6 2393 -41 2393 -115 ct
|
||||
2393 -182 2363 -227 2318 -227 ct 2296 -227 2280 -217 2264 -192 ct 2264 -303 l
|
||||
2234 -303 l 2234 0 l 2263 0 l p
|
||||
2313 -194 m 2345 -194 2361 -167 2361 -113 ct 2361 -58 2343 -26 2312 -26 ct
|
||||
2300 -26 2288 -32 2279 -43 ct 2268 -57 2263 -76 2263 -105 ct 2263 -163 2280 -194 2313 -194 ct
|
||||
p ef
|
||||
2506 -227 m 2455 -227 2421 -180 2421 -110 ct 2421 -41 2455 5 2505 5 ct 2555 5 2589 -41 2589 -110 ct
|
||||
2589 -178 2555 -227 2506 -227 ct p
|
||||
2506 -195 m 2537 -195 2557 -161 2557 -110 ct 2557 -59 2537 -26 2505 -26 ct
|
||||
2473 -26 2452 -59 2452 -110 ct 2452 -162 2473 -195 2506 -195 ct p ef
|
||||
2701 -227 m 2650 -227 2616 -180 2616 -110 ct 2616 -41 2650 5 2700 5 ct 2750 5 2784 -41 2784 -110 ct
|
||||
2784 -178 2750 -227 2701 -227 ct p
|
||||
2701 -195 m 2732 -195 2752 -161 2752 -110 ct 2752 -59 2732 -26 2700 -26 ct
|
||||
2668 -26 2647 -59 2647 -110 ct 2647 -162 2668 -195 2701 -195 ct p ef
|
||||
2898 -138 m 2967 -221 l 2929 -221 l 2850 -127 l 2850 -303 l 2821 -303 l
|
||||
2821 0 l 2850 0 l 2850 -83 l 2876 -111 l 2932 0 l 2971 0 l 2898 -138 l
|
||||
p ef
|
||||
3242 -221 m 3213 -221 l 3213 -188 l 3196 -217 3182 -227 3157 -227 ct 3112 -227 3082 -182 3082 -115 ct
|
||||
3082 -42 3114 6 3162 6 ct 3184 6 3199 -2 3211 -24 ct 3211 -15 l 3211 11 3209 25 3203 37 ct
|
||||
3195 54 3181 62 3159 62 ct 3136 62 3124 52 3118 27 ct 3088 27 l 3093 55 3099 68 3113 79 ct
|
||||
3125 88 3140 93 3158 93 ct 3189 93 3213 80 3227 57 ct 3237 39 3242 17 3242 -18 ct
|
||||
3242 -221 l p
|
||||
3164 -194 m 3195 -194 3212 -162 3212 -104 ct 3212 -55 3194 -26 3162 -26 ct
|
||||
3132 -26 3114 -58 3114 -113 ct 3114 -167 3131 -194 3164 -194 ct p ef
|
||||
3313 -153 m 3317 -184 3329 -196 3356 -196 ct 3383 -196 3398 -184 3398 -159 ct
|
||||
3398 -143 3393 -136 3382 -134 ct 3331 -126 l 3296 -121 3276 -96 3276 -58 ct
|
||||
3276 -19 3299 6 3334 6 ct 3360 6 3379 -4 3398 -29 ct 3401 -5 3409 4 3430 4 ct 3434 4 3438 3 3444 1 ct
|
||||
3446 0 3446 0 3448 0 ct 3448 -27 l 3441 -25 3439 -25 3437 -25 ct 3431 -25 3427 -30 3427 -38 ct
|
||||
3427 -165 l 3427 -204 3401 -227 3358 -227 ct 3329 -227 3308 -217 3296 -198 ct
|
||||
3289 -186 3286 -175 3285 -153 ct 3313 -153 l p
|
||||
3397 -76 m 3397 -48 3371 -24 3340 -24 ct 3320 -24 3308 -38 3308 -61 ct 3308 -83 3319 -94 3347 -98 ct
|
||||
3382 -104 3390 -107 3397 -112 ct 3397 -76 l p ef
|
||||
3512 -221 m 3482 -221 l 3482 0 l 3512 0 l 3512 -221 l p
|
||||
3512 -261 m 3512 -303 l 3482 -303 l 3482 -261 l 3512 -261 l p ef
|
||||
3586 -221 m 3557 -221 l 3557 0 l 3587 0 l 3587 -120 l 3587 -166 3606 -194 3637 -194 ct
|
||||
3663 -194 3675 -176 3675 -136 ct 3675 0 l 3705 0 l 3705 -150 l 3705 -199 3682 -227 3644 -227 ct
|
||||
3619 -227 3601 -216 3586 -188 ct 3586 -221 l p ef
|
||||
pom
|
||||
gr
|
||||
0 lw 1 lj 11185 19818 m 9435 19818 l 9435 18318 l 12935 18318 l 12935 19818 l
|
||||
11185 19818 l pc
|
||||
gs
|
||||
pum
|
||||
10523 19288 t
|
||||
41 0 m 191 0 l 234 0 272 -17 297 -48 ct 332 -92 351 -157 351 -233 ct 351 -368 289 -455 193 -455 ct
|
||||
41 -455 l 41 0 l p
|
||||
92 -403 m 187 -403 l 259 -403 299 -341 299 -227 ct 299 -119 257 -52 190 -52 ct
|
||||
92 -52 l 92 -403 l p ef
|
||||
596 -104 m 591 -66 561 -39 524 -39 ct 497 -39 476 -51 462 -74 ct 451 -92 448 -110 446 -147 ct
|
||||
645 -147 l 643 -213 637 -244 622 -277 ct 601 -321 570 -341 526 -341 ct 448 -341 397 -271 397 -160 ct
|
||||
397 -55 445 9 523 9 ct 585 9 629 -32 641 -104 ct 596 -104 l p
|
||||
446 -192 m 449 -252 481 -292 524 -292 ct 548 -292 568 -280 580 -260 ct 591 -243 595 -226 597 -192 ct
|
||||
446 -192 l p ef
|
||||
745 -455 m 699 -455 l 699 0 l 745 0 l 745 -455 l p ef
|
||||
853 -231 m 859 -277 877 -295 917 -295 ct 958 -295 980 -276 980 -240 ct 980 -215 973 -204 956 -201 ct
|
||||
880 -190 l 827 -182 798 -145 798 -87 ct 798 -29 832 9 885 9 ct 923 9 951 -6 981 -44 ct
|
||||
984 -8 997 6 1028 6 ct 1035 6 1040 5 1049 1 ct 1052 0 1053 0 1055 0 ct 1055 -40 l
|
||||
1045 -38 1043 -38 1039 -38 ct 1029 -38 1024 -45 1024 -57 ct 1024 -248 l 1024 -306 985 -341 920 -341 ct
|
||||
878 -341 845 -326 827 -297 ct 817 -280 813 -264 811 -231 ct 853 -231 l p
|
||||
979 -114 m 979 -73 940 -36 894 -36 ct 863 -36 845 -57 845 -92 ct 845 -125 862 -141 904 -148 ct
|
||||
956 -157 969 -160 979 -169 ct 979 -114 l p ef
|
||||
1197 -59 m 1124 -332 l 1072 -332 l 1173 8 l 1168 24 1164 38 1162 43 ct
|
||||
1152 76 1144 85 1125 85 ct 1115 85 1106 83 1097 80 ct 1097 130 l 1101 132 l
|
||||
1109 135 1113 135 1119 135 ct 1174 135 1182 125 1223 -6 ct 1321 -332 l 1270 -332 l
|
||||
1197 -59 l p ef
|
||||
pom
|
||||
gr
|
||||
13385 18918 m 13385 19218 l 12935 19068 l 13385 18918 l p ef
|
||||
1 lw 0 lj 14935 14567 m 14935 19068 l 13295 19068 l ps
|
||||
7085 18268 m 6785 18268 l 6935 17818 l 7085 18268 l p ef
|
||||
9435 19068 m 6935 19068 l 6935 18178 l ps
|
||||
20025 14718 m 20031 14418 l 20478 14577 l 20025 14718 l p ef
|
||||
19335 14568 m 20127 14568 l ps
|
||||
gs
|
||||
pum
|
||||
10179 20249 t
|
||||
63 -128 m 141 -128 l 186 -128 215 -163 215 -217 ct 215 -269 186 -303 141 -303 ct
|
||||
30 -303 l 30 0 l 63 0 l 63 -128 l p
|
||||
63 -268 m 131 -268 l 164 -268 181 -251 181 -216 ct 181 -181 164 -163 130 -163 ct
|
||||
63 -163 l 63 -268 l p ef
|
||||
282 -153 m 286 -184 298 -196 325 -196 ct 352 -196 367 -184 367 -159 ct 367 -143 362 -136 351 -134 ct
|
||||
300 -126 l 265 -121 245 -96 245 -58 ct 245 -19 268 6 303 6 ct 329 6 348 -4 367 -29 ct
|
||||
370 -5 378 4 399 4 ct 403 4 407 3 413 1 ct 415 0 415 0 417 0 ct 417 -27 l 410 -25 408 -25 406 -25 ct
|
||||
400 -25 396 -30 396 -38 ct 396 -165 l 396 -204 370 -227 327 -227 ct 298 -227 277 -217 265 -198 ct
|
||||
258 -186 255 -175 254 -153 ct 282 -153 l p
|
||||
366 -76 m 366 -48 340 -24 309 -24 ct 289 -24 277 -38 277 -61 ct 277 -83 288 -94 316 -98 ct
|
||||
351 -104 359 -107 366 -112 ct 366 -76 l p ef
|
||||
582 -158 m 580 -202 555 -227 514 -227 ct 472 -227 444 -200 444 -157 ct 444 -129 458 -111 486 -103 ct
|
||||
522 -92 l 550 -84 558 -77 558 -60 ct 558 -39 542 -26 515 -26 ct 484 -26 470 -39 468 -71 ct
|
||||
439 -71 l 440 -49 442 -38 448 -27 ct 460 -5 483 6 513 6 ct 559 6 588 -22 588 -66 ct
|
||||
588 -97 574 -113 537 -125 ct 507 -134 l 480 -142 474 -148 474 -163 ct 474 -183 488 -195 512 -195 ct
|
||||
538 -195 551 -183 553 -158 ct 582 -158 l p ef
|
||||
690 -190 m 690 -221 l 660 -221 l 660 -282 l 630 -282 l 630 -221 l
|
||||
605 -221 l 605 -190 l 630 -190 l 630 -44 l 630 -12 641 2 665 2 ct 667 2 669 2 676 1 ct
|
||||
678 1 683 0 689 0 ct 689 -29 l 679 -29 l 665 -29 660 -34 660 -46 ct 660 -190 l
|
||||
690 -190 l p ef
|
||||
950 -158 m 948 -202 923 -227 882 -227 ct 840 -227 812 -200 812 -157 ct 812 -129 826 -111 854 -103 ct
|
||||
890 -92 l 918 -84 926 -77 926 -60 ct 926 -39 910 -26 883 -26 ct 852 -26 838 -39 836 -71 ct
|
||||
807 -71 l 808 -49 810 -38 816 -27 ct 828 -5 851 6 881 6 ct 927 6 956 -22 956 -66 ct
|
||||
956 -97 942 -113 905 -125 ct 875 -134 l 848 -142 842 -148 842 -163 ct 842 -183 856 -195 880 -195 ct
|
||||
906 -195 919 -183 921 -158 ct 950 -158 l p ef
|
||||
1138 0 m 1138 -221 l 1108 -221 l 1108 -99 l 1108 -54 1088 -26 1058 -26 ct
|
||||
1034 -26 1023 -42 1023 -74 ct 1023 -221 l 992 -221 l 992 -62 l 992 -19 1015 6 1052 6 ct
|
||||
1079 6 1093 -3 1109 -34 ct 1109 0 l 1138 0 l p ef
|
||||
1213 0 m 1213 -28 l 1226 -3 1240 6 1264 6 ct 1312 6 1343 -41 1343 -115 ct
|
||||
1343 -182 1313 -227 1268 -227 ct 1246 -227 1230 -217 1214 -192 ct 1214 -303 l
|
||||
1184 -303 l 1184 0 l 1213 0 l p
|
||||
1263 -194 m 1295 -194 1311 -167 1311 -113 ct 1311 -58 1293 -26 1262 -26 ct
|
||||
1250 -26 1238 -32 1229 -43 ct 1218 -57 1213 -76 1213 -105 ct 1213 -163 1230 -194 1263 -194 ct
|
||||
p ef
|
||||
1449 -190 m 1449 -221 l 1419 -221 l 1419 -248 l 1419 -266 1424 -274 1437 -274 ct
|
||||
1440 -274 1444 -274 1449 -273 ct 1449 -307 l 1440 -307 1438 -307 1435 -307 ct
|
||||
1405 -307 1389 -291 1389 -259 ct 1389 -221 l 1363 -221 l 1363 -190 l 1389 -190 l
|
||||
1389 0 l 1419 0 l 1419 -190 l 1449 -190 l p ef
|
||||
1571 -188 m 1571 -226 l 1568 -227 1565 -227 1563 -227 ct 1541 -227 1527 -215 1511 -183 ct
|
||||
1511 -221 l 1482 -221 l 1482 0 l 1513 0 l 1513 -129 l 1513 -163 1532 -188 1559 -188 ct
|
||||
1571 -188 l p ef
|
||||
1620 -153 m 1624 -184 1636 -196 1663 -196 ct 1690 -196 1705 -184 1705 -159 ct
|
||||
1705 -143 1700 -136 1689 -134 ct 1638 -126 l 1603 -121 1583 -96 1583 -58 ct
|
||||
1583 -19 1606 6 1641 6 ct 1667 6 1686 -4 1705 -29 ct 1708 -5 1716 4 1737 4 ct 1741 4 1745 3 1751 1 ct
|
||||
1753 0 1753 0 1755 0 ct 1755 -27 l 1748 -25 1746 -25 1744 -25 ct 1738 -25 1734 -30 1734 -38 ct
|
||||
1734 -165 l 1734 -204 1708 -227 1665 -227 ct 1636 -227 1615 -217 1603 -198 ct
|
||||
1596 -186 1593 -175 1592 -153 ct 1620 -153 l p
|
||||
1704 -76 m 1704 -48 1678 -24 1647 -24 ct 1627 -24 1615 -38 1615 -61 ct 1615 -83 1626 -94 1654 -98 ct
|
||||
1689 -104 1697 -107 1704 -112 ct 1704 -76 l p ef
|
||||
1787 0 m 1817 0 l 1817 -120 l 1817 -165 1836 -194 1866 -194 ct 1883 -194 1894 -179 1894 -153 ct
|
||||
1894 0 l 1924 0 l 1924 -134 l 1924 -168 1943 -194 1968 -194 ct 1990 -194 2001 -177 2001 -142 ct
|
||||
2001 0 l 2031 0 l 2031 -153 l 2031 -199 2009 -227 1974 -227 ct 1952 -227 1940 -219 1920 -191 ct
|
||||
1908 -217 1894 -227 1872 -227 ct 1848 -227 1831 -216 1816 -188 ct 1816 -221 l
|
||||
1787 -221 l 1787 0 l p ef
|
||||
2198 -69 m 2195 -44 2175 -26 2151 -26 ct 2133 -26 2118 -34 2110 -49 ct 2102 -61 2100 -73 2099 -98 ct
|
||||
2231 -98 l 2230 -142 2226 -162 2216 -184 ct 2202 -214 2182 -227 2152 -227 ct
|
||||
2100 -227 2066 -180 2066 -106 ct 2066 -36 2098 6 2150 6 ct 2192 6 2221 -21 2229 -69 ct
|
||||
2198 -69 l p
|
||||
2099 -128 m 2101 -167 2122 -194 2151 -194 ct 2167 -194 2180 -186 2188 -173 ct
|
||||
2195 -162 2198 -151 2200 -128 ct 2099 -128 l p ef
|
||||
pom
|
||||
gr
|
||||
tm setmatrix
|
||||
0 0 t
|
||||
1 1 s
|
||||
0 11113 t
|
||||
pom
|
||||
count op_count sub {pop} repeat countdictstack dict_count sub {end} repeat b4_inc_state restore
|
||||
%%PageTrailer
|
||||
%%Trailer
|
||||
%%EOF
|
||||
BIN
Engine/lib/speex/doc/celp_decoder.odg
Normal file
BIN
Engine/lib/speex/doc/celp_decoder.odg
Normal file
Binary file not shown.
1361
Engine/lib/speex/doc/components.eps
Normal file
1361
Engine/lib/speex/doc/components.eps
Normal file
File diff suppressed because it is too large
Load diff
BIN
Engine/lib/speex/doc/components.odg
Normal file
BIN
Engine/lib/speex/doc/components.odg
Normal file
Binary file not shown.
699
Engine/lib/speex/doc/draft-herlein-avt-rtp-speex-00.txt
Normal file
699
Engine/lib/speex/doc/draft-herlein-avt-rtp-speex-00.txt
Normal file
|
|
@ -0,0 +1,699 @@
|
|||
|
||||
|
||||
|
||||
|
||||
Internet Engineering Task Force Greg Herlein
|
||||
Internet Draft Jean-Marc Valin
|
||||
draft-herlein-avt-rtp-speex-00.txt Simon Morlat
|
||||
March 3, 2004 Roger Hardiman
|
||||
Expires: September 3, 2004 Phil Kerr
|
||||
|
||||
|
||||
RTP Payload Format for the Speex Codec
|
||||
|
||||
Status of this Memo
|
||||
|
||||
This document is an Internet-Draft and is in full conformance with
|
||||
all provisions of Section 10 of RFC 2026.
|
||||
|
||||
Internet-Drafts are working documents of the Internet Engineering
|
||||
Task Force (IETF), its areas, and its working groups. Note that
|
||||
other groups may also distribute working documents as Internet-
|
||||
Drafts.
|
||||
|
||||
Internet-Drafts are draft documents valid for a maximum of six
|
||||
months and may be updated, replaced, or obsoleted by other
|
||||
documents at any time. It is inappropriate to use Internet-Drafts
|
||||
as reference material or to cite them other than as "work in
|
||||
progress".
|
||||
|
||||
The list of current Internet-Drafts can be accessed at
|
||||
http://www.ietf.org/ietf/1id-abstracts.txt
|
||||
|
||||
To view the list Internet-Draft Shadow Directories, see
|
||||
http://www.ietf.org/shadow.html.
|
||||
|
||||
|
||||
Copyright Notice
|
||||
|
||||
Copyright (C) The Internet Society (2003). All Rights Reserved.
|
||||
|
||||
|
||||
Abstract
|
||||
|
||||
Speex is an open-source voice codec suitable for use in Voice over
|
||||
IP (VoIP) type applications. This document describes the payload
|
||||
format for Speex generated bit streams within an RTP packet. Also
|
||||
included here are the necessary details for the use of Speex with
|
||||
the Session Description Protocol (SDP) and a preliminary method of
|
||||
using Speex within H.323 applications.
|
||||
|
||||
|
||||
1. Conventions used in this document
|
||||
|
||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
|
||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
|
||||
document are to be interpreted as described in RFC 2119 [5].
|
||||
|
||||
Herlein, Valin, et. al. Expires September 3, 2004 [Page 1]
|
||||
^L
|
||||
Internet-Draft draft-herlein-avt-rtp-speex-00.txt March 3, 2004
|
||||
|
||||
|
||||
2. Overview of the Speex Codec
|
||||
|
||||
Speex is based on the CELP [12] encoding technique with support for
|
||||
either narrowband (nominal 8kHz), wideband (nominal 16kHz) or
|
||||
ultra-wideband (nominal 32kHz), and (non-optimal) rates up to 48 kHz
|
||||
sampling also available. The main characteristics can be summarized
|
||||
as follows:
|
||||
|
||||
o Free software/open-source
|
||||
o Integration of wideband and narrowband in the same bit-stream
|
||||
o Wide range of bit-rates available
|
||||
o Dynamic bit-rate switching and variable bit-rate (VBR)
|
||||
o Voice Activity Detection (VAD, integrated with VBR)
|
||||
o Variable complexity
|
||||
|
||||
|
||||
3. RTP payload format for Speex
|
||||
|
||||
For RTP based transportation of Speex encoded audio the standard
|
||||
RTP header [2] is followed by one or more payload data blocks.
|
||||
An optional padding terminator may also be used.
|
||||
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| RTP Header |
|
||||
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
| one or more frames of Speex .... |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| one or more frames of Speex .... | padding |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|
||||
|
||||
3.1 RTP Header
|
||||
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|V=2|P|X| CC |M| PT | sequence number |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| timestamp |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| synchronization source (SSRC) identifier |
|
||||
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
| contributing source (CSRC) identifiers |
|
||||
| ... |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|
||||
|
||||
The RTP header begins with an octet of fields (V, P, X, and CC) to
|
||||
support specialized RTP uses (see [8] and [9] for details). For
|
||||
Speex the following values are used.
|
||||
|
||||
Herlein, Valin, et. al. Expires September 3, 2004 [Page 2]
|
||||
^L
|
||||
Internet-Draft draft-herlein-avt-rtp-speex-00.txt March 3, 2004
|
||||
|
||||
|
||||
Version (V): 2 bits
|
||||
This field identifies the version of RTP. The version
|
||||
used by this specification is two (2).
|
||||
|
||||
Padding (P): 1 bit
|
||||
If the padding bit is set, the packet contains one or more
|
||||
additional padding octets at the end which are not part of
|
||||
the payload. P is set if the total packet size is less than
|
||||
the MTU.
|
||||
|
||||
Extension (X): 1 bit
|
||||
If the extension, X, bit is set, the fixed header MUST be
|
||||
followed by exactly one header extension, with a format defined
|
||||
in Section 5.3.1. of [8],
|
||||
|
||||
CSRC count (CC): 4 bits
|
||||
The CSRC count contains the number of CSRC identifiers.
|
||||
|
||||
Marker (M): 1 bit
|
||||
The M bit indicates if the packet contains comfort noise. This
|
||||
field is used in conjunction with the cng SDP attribute and is
|
||||
detailed further in section 5 below. In normal usage this bit
|
||||
is set if the packet contains comfort noise.
|
||||
|
||||
Payload Type (PT): 7 bits
|
||||
An RTP profile for a class of applications is expected to assign
|
||||
a payload type for this format, or a dynamically allocated
|
||||
payload type SHOULD be chosen which designates the payload as
|
||||
Speex.
|
||||
|
||||
Sequence number: 16 bits
|
||||
The sequence number increments by one for each RTP data packet
|
||||
sent, and may be used by the receiver to detect packet loss and
|
||||
to restore packet sequence. This field is detailed further in
|
||||
[2].
|
||||
|
||||
Timestamp: 32 bits
|
||||
A timestamp representing the sampling time of the first sample of
|
||||
the first Speex packet in the RTP packet. The clock frequency
|
||||
MUST be set to the sample rate of the encoded audio data.
|
||||
|
||||
Speex uses 20 msec frames and a variable sampling rate clock.
|
||||
The RTP timestamp MUST be in units of 1/X of a second where X
|
||||
is the sample rate used. Speex uses a nominal 8kHz sampling rate
|
||||
for narrowband use, a nominal 16kHz sampling rate for wideband use,
|
||||
and a nominal 32kHz sampling rate for ultra-wideband use.
|
||||
|
||||
SSRC/CSRC identifiers:
|
||||
These two fields, 32 bits each with one SSRC field and a maximum
|
||||
of 16 CSRC fields, are as defined in [2].
|
||||
|
||||
|
||||
|
||||
Herlein, Valin, et. al. Expires September 3, 2004 [Page 3]
|
||||
^L
|
||||
Internet-Draft draft-herlein-avt-rtp-speex-00.txt March 3, 2004
|
||||
|
||||
|
||||
3.2 Speex payload
|
||||
|
||||
For the purposes of packetizing the bit stream in RTP, it is only
|
||||
necessary to consider the sequence of bits as output by the Speex
|
||||
encoder [11], and present the same sequence to the decoder. The
|
||||
payload format described here maintains this sequence.
|
||||
|
||||
A typical Speex frame, encoded at the maximum bitrate, is approx.
|
||||
110 octets and the total number of Speex frames SHOULD be kept
|
||||
less than the path MTU to prevent fragmentation. Speex frames MUST
|
||||
NOT be fragmented across multiple RTP packets,
|
||||
|
||||
An RTP packet MAY contain Speex frames of the same bit rate or of
|
||||
varying bit rates, since the bit-rate for a frame is conveyed in
|
||||
band with the signal.
|
||||
|
||||
The encoding and decoding algorithm can change the bit rate at any
|
||||
20 msec frame boundary, with the bit rate change notification provided
|
||||
in-band with the bit stream. Each frame contains both "mode"
|
||||
(narrowband, wideband or ultra-wideband) and "sub-mode" (bit-rate)
|
||||
information in the bit stream. No out-of-band notification is
|
||||
required for the decoder to process changes in the bit rate sent
|
||||
by the encoder.
|
||||
|
||||
It is RECOMMENDED that values of 8000, 16000 and 32000 be used
|
||||
for normal internet telephony applications, though the sample
|
||||
rate is supported at rates as low as 6000 Hz and as high as
|
||||
48 kHz.
|
||||
|
||||
The RTP payload MUST be padded to provide an integer number of
|
||||
octets as the payload length. These padding bits are LSB aligned
|
||||
in network byte order and consist of a 0 followed by all ones
|
||||
(until the end of the octet). This padding is only required for
|
||||
the last frame in the packet, and only to ensure the packet
|
||||
contents ends on an octet boundary.
|
||||
|
||||
|
||||
3.2.1 Example Speex packet
|
||||
|
||||
In the example below we have a single Speex frame with 5 bits
|
||||
of padding to ensure the packet size falls on an octet boundary.
|
||||
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|V=2|P|X| CC |M| PT | sequence number |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| timestamp |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| synchronization source (SSRC) identifier |
|
||||
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
|
||||
|
||||
Herlein, Valin, et. al. Expires September 3, 2004 [Page 4]
|
||||
^L
|
||||
Internet-Draft draft-herlein-avt-rtp-speex-00.txt March 3, 2004
|
||||
|
||||
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
| contributing source (CSRC) identifiers |
|
||||
| ... |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| ..speex data.. |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| ..speex data.. |0 1 1 1 1|
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|
||||
|
||||
3.4 Multiple Speex frames in a RTP packet
|
||||
|
||||
Below is an example of two Speex frames contained within one RTP
|
||||
packet. The Speex frame length in this example fall on an octet
|
||||
boundary so there is no padding.
|
||||
|
||||
Speex codecs [11] are able to detect the the bitrate from the
|
||||
payload and are responsible for detecting the 20 msec boundaries
|
||||
between each frame.
|
||||
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|V=2|P|X| CC |M| PT | sequence number |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| timestamp |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| synchronization source (SSRC) identifier |
|
||||
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
| contributing source (CSRC) identifiers |
|
||||
| ... |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| ..speex data.. |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| ..speex data.. | ..speex data.. |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| ..speex data.. |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|
||||
|
||||
4. MIME registration of Speex
|
||||
|
||||
Full definition of the MIME type for Speex will be part of the Ogg
|
||||
Vorbis MIME type definition application [10].
|
||||
|
||||
MIME media type name: audio
|
||||
|
||||
MIME subtype: speex
|
||||
|
||||
Herlein, Valin, et. al. Expires September 3, 2004 [Page 5]
|
||||
^L
|
||||
Internet-Draft draft-herlein-avt-rtp-speex-00.txt March 3, 2004
|
||||
|
||||
|
||||
Optional parameters:
|
||||
|
||||
Required parameters: to be included in the Ogg MIME specification.
|
||||
|
||||
Encoding considerations:
|
||||
|
||||
Security Considerations:
|
||||
See Section 6 of RFC 3047.
|
||||
|
||||
Interoperability considerations: none
|
||||
|
||||
Published specification:
|
||||
|
||||
Applications which use this media type:
|
||||
|
||||
Additional information: none
|
||||
|
||||
Person & email address to contact for further information:
|
||||
Greg Herlein <gherlein@herlein.com>
|
||||
Jean-Marc Valin <jean-marc.valin@hermes.usherb.ca>
|
||||
|
||||
Intended usage: COMMON
|
||||
|
||||
Author/Change controller:
|
||||
Author: Greg Herlein <gherlein@herlein.com>
|
||||
Change controller: Greg Herlein <gherlein@herlein.com>
|
||||
|
||||
This transport type signifies that the content is to be interpreted
|
||||
according to this document if the contents are transmitted over RTP.
|
||||
Should this transport type appear over a lossless streaming protocol
|
||||
such as TCP, the content encapsulation should be interpreted as an
|
||||
Ogg Stream in accordance with RFC 3534, with the exception that the
|
||||
content of the Ogg Stream may be assumed to be Speex audio and
|
||||
Speex audio only.
|
||||
|
||||
|
||||
5. SDP usage of Speex
|
||||
|
||||
When conveying information by SDP [4], the encoding name MUST be
|
||||
set to "speex". An example of the media representation in SDP for
|
||||
offering a single channel of Speex at 8000 samples per second might
|
||||
be:
|
||||
|
||||
m=audio 8088 RTP/AVP 97
|
||||
a=rtpmap:97 speex/8000
|
||||
|
||||
Note that the RTP payload type code of 97 is defined in this media
|
||||
definition to be 'mapped' to the speex codec at an 8kHz sampling
|
||||
frequency using the 'a=rtpmap' line. Any number from 96 to 127
|
||||
could have been chosen (the allowed range for dynamic types).
|
||||
|
||||
|
||||
|
||||
Herlein, Valin, et. al. Expires September 3, 2004 [Page 6]
|
||||
^L
|
||||
Internet-Draft draft-herlein-avt-rtp-speex-00.txt March 3, 2004
|
||||
|
||||
|
||||
The value of the sampling frequency is typically 8000 for narrow band
|
||||
operation, 16000 for wide band operation, and 32000 for ultra-wide
|
||||
band operation.
|
||||
|
||||
If for some reason the offerer has bandwidth limitations, the client
|
||||
may use the "b=" header, as explained in SDP [4]. The following example
|
||||
illustrates the case where the offerer cannot receive more than
|
||||
10 kbit/s.
|
||||
|
||||
m=audio 8088 RTP/AVP 97
|
||||
b=AS:10
|
||||
a=rtmap:97 speex/8000
|
||||
|
||||
In this case, if the remote part agrees, it should configure its
|
||||
Speex encoder so that it does not use modes that produce more than
|
||||
10 kbit/s. Note that the "b=" constraint also applies on all
|
||||
payload types that may be proposed in the media line ("m=").
|
||||
|
||||
An other way to make recommendations to the remote Speex encoder
|
||||
is to use its specific parameters via the a=fmtp: directive. The
|
||||
following parameters are defined for use in this way:
|
||||
|
||||
ptime: duration of each packet in milliseconds.
|
||||
|
||||
sr: actual sample rate in Hz.
|
||||
|
||||
ebw: encoding bandwidth - either 'narrow' or 'wide' or
|
||||
'ultra' (corresponds to nominal 8000, 16000, and
|
||||
32000 Hz sampling rates).
|
||||
|
||||
vbr: variable bit rate - either 'on' 'off' or 'vad'
|
||||
(defaults to off). If on, variable bit rate is
|
||||
enabled. If off, disabled. If set to 'vad' then
|
||||
constant bit rate is used but silence will be encoded
|
||||
with special short frames to indicate a lack of voice
|
||||
for that period.
|
||||
|
||||
cng: comfort noise generation - either 'on' or 'off'. If
|
||||
off then silence frames will be silent; if 'on' then
|
||||
those frames will be filled with comfort noise.
|
||||
|
||||
mode: Speex encoding mode. Can be {1,2,3,4,5,6,any}
|
||||
defaults to 3 in narrowband, 6 in wide and ultra-wide.
|
||||
|
||||
penh: use of perceptual enhancement. 1 indicates
|
||||
to the decoder that perceptual enhancement is recommended,
|
||||
0 indicates that it is not. Defaults to on (1).
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Herlein, Valin, et. al. Expires September 3, 2004 [Page 7]
|
||||
^L
|
||||
Internet-Draft draft-herlein-avt-rtp-speex-00.txt March 3, 2004
|
||||
|
||||
|
||||
Examples:
|
||||
|
||||
m=audio 8008 RTP/AVP 97
|
||||
a=rtpmap:97 speex/8000
|
||||
a=fmtp:97 mode=4
|
||||
|
||||
This examples illustrate an offerer that wishes to receive
|
||||
a Speex stream at 8000Hz, but only using speex mode 3.
|
||||
|
||||
The offerer may suggest to the remote decoder to activate
|
||||
its perceptual enhancement filter like this:
|
||||
|
||||
m=audio 8088 RTP/AVP 97
|
||||
a=rtmap:97 speex/8000
|
||||
a=fmtp:97 penh=1
|
||||
|
||||
Several Speex specific parameters can be given in a single
|
||||
a=fmtp line provided that they are separated by a semi-colon:
|
||||
|
||||
a=fmtp:97 mode=any;penh=1
|
||||
|
||||
The offerer may indicate that it wishes to send variable bit rate
|
||||
frames with comfort noise:
|
||||
|
||||
m=audio 8088 RTP/AVP 97
|
||||
a=rtmap:97 speex/8000
|
||||
a=fmtp:97 vbr=on;cng=on
|
||||
|
||||
The "ptime" attribute is used to denote the packetization
|
||||
interval (ie, how many milliseconds of audio is encoded in a
|
||||
single RTP packet). Since Speex uses 20 msec frames, ptime values
|
||||
of multiples of 20 denote multiple Speex frames per packet.
|
||||
Values of ptime which are not multiples of 20 MUST be ignored
|
||||
and clients MUST use the default value of 20 instead.
|
||||
|
||||
In the example below the ptime value is set to 40, indicating that
|
||||
there are 2 frames in each packet.
|
||||
|
||||
m=audio 8008 RTP/AVP 97
|
||||
a=rtpmap:97 speex/8000
|
||||
a=ptime:40
|
||||
|
||||
Note that the ptime parameter applies to all payloads listed
|
||||
in the media line and is not used as part of an a=fmtp directive.
|
||||
|
||||
Values of ptime not multiple of 20 msec are meaningless, so the
|
||||
receiver of such ptime values MUST ignore them. If during the
|
||||
life of an RTP session the ptime value changes, when there are
|
||||
multiple Speex frames for example, the SDP value must also reflect
|
||||
the new value.
|
||||
|
||||
|
||||
|
||||
Herlein, Valin, et. al. Expires September 3, 2004 [Page 8]
|
||||
^L
|
||||
Internet-Draft draft-herlein-avt-rtp-speex-00.txt March 3, 2004
|
||||
|
||||
|
||||
Care must be taken when setting the value of ptime so that the
|
||||
RTP packet size does not exceed the path MTU.
|
||||
|
||||
|
||||
6. ITU H.323/H.245 Use of Speex
|
||||
|
||||
Application is underway to make Speex a standard ITU codec.
|
||||
However, until that is finalized, Speex MAY be used in H.323 [6] by
|
||||
using a non-standard codec block definition in the H.245 [7] codec
|
||||
capability negotiations.
|
||||
|
||||
|
||||
6.1 NonStandardMessage format
|
||||
|
||||
For Speex use in H.245 [7] based systems, the fields in the
|
||||
NonStandardMessage should be:
|
||||
|
||||
t35CountryCode = Hex: B5
|
||||
t35Extension = Hex: 00
|
||||
manufacturerCode = Hex: 0026
|
||||
[Length of the Binary Sequence (8 bit number)]
|
||||
[Binary Sequence consisting of an ASCII string, no NULL terminator]
|
||||
|
||||
The binary sequence is an ascii string merely for ease of use.
|
||||
The string is not null terminated. The format of this string is
|
||||
|
||||
speex [optional variables]
|
||||
|
||||
The optional variables are identical to those used for the SDP
|
||||
a=fmtp strings discussed in section 5 above. The string is built
|
||||
to be all on one line, each key-value pair separated by a
|
||||
semi-colon. The optional variables MAY be omitted, which causes
|
||||
the default values to be assumed. They are:
|
||||
|
||||
ebw=narrow;mode=3;vbr=off;cng=off;ptime=20;sr=8000;penh=no;
|
||||
|
||||
The fifth byte of the block is the length of the binary sequence.
|
||||
|
||||
NOTE: this method can result in the advertising of a large number
|
||||
of Speex 'codecs' based on the number of variables possible. For
|
||||
most VoIP applications, use of the default binary sequence of
|
||||
'speex' is RECOMMENDED to be used in addition to all other options.
|
||||
This maximizes the chances that two H.323 based applications that
|
||||
support Speex can find a mutual codec.
|
||||
|
||||
|
||||
6.2 RTP Payload Types
|
||||
|
||||
Dynamic payload type codes MUST be negotiated 'out-of-band'
|
||||
for the assignment of a dynamic payload type from the
|
||||
range of 96-127. H.323 applications MUST use the H.245
|
||||
H2250LogicalChannelParameters encoding to accomplish this.
|
||||
|
||||
Herlein, Valin, et. al. Expires September 3, 2004 [Page 9]
|
||||
^L
|
||||
Internet-Draft draft-herlein-avt-rtp-speex-00.txt March 3, 2004
|
||||
|
||||
|
||||
7. Security Considerations
|
||||
|
||||
RTP packets using the payload format defined in this specification
|
||||
are subject to the security considerations discussed in the RTP
|
||||
specification [2], and any appropriate RTP profile. This implies
|
||||
that confidentiality of the media streams is achieved by encryption.
|
||||
Because the data compression used with this payload format is applied
|
||||
end-to-end, encryption may be performed after compression so there is
|
||||
no conflict between the two operations.
|
||||
|
||||
A potential denial-of-service threat exists for data encodings using
|
||||
compression techniques that have non-uniform receiver-end
|
||||
computational load. The attacker can inject pathological datagrams
|
||||
into the stream which are complex to decode and cause the receiver to
|
||||
be overloaded. However, this encoding does not exhibit any
|
||||
significant non-uniformity.
|
||||
|
||||
As with any IP-based protocol, in some circumstances a receiver may
|
||||
be overloaded simply by the receipt of too many packets, either
|
||||
desired or undesired. Network-layer authentication may be used to
|
||||
discard packets from undesired sources, but the processing cost of
|
||||
the authentication itself may be too high.
|
||||
|
||||
|
||||
8. Normative References
|
||||
|
||||
1. Bradner, S., "The Internet Standards Process -- Revision 3", BCP
|
||||
9, RFC 2026, October 1996.
|
||||
|
||||
2. Schulzrinne, H., Casner, S., Frederick, R. and V. Jacobson, "RTP:
|
||||
A Transport Protocol for real-time applications", RFC 1889,
|
||||
January 1996.
|
||||
|
||||
3. Freed, N. and N. Borenstein, "Multipurpose Internet Mail
|
||||
Extensions (MIME) Part One: Format of Internet Message Bodies",
|
||||
RFC 2045, November 1996.
|
||||
|
||||
4. Handley, M. and V. Jacobson, "SDP: Session Description
|
||||
Protocol", RFC 2327, April 1998.
|
||||
|
||||
5. Bradner, S., "Key words for use in RFCs to Indicate Requirement
|
||||
Levels", BCP 14, RFC 2119, March 1997.
|
||||
|
||||
6. ITU-T Recommendation H.323. "Packet-based Multimedia
|
||||
Communications Systems," 1998.
|
||||
|
||||
7. ITU-T Recommendation H.245 (1998), "Control of communications
|
||||
between Visual Telephone Systems and Terminal Equipment".
|
||||
|
||||
8. RTP: A transport protocol for real-time applications. Work
|
||||
in progress, draft-ietf-avt-rtp-new-12.txt.
|
||||
|
||||
Herlein, Valin, et. al. Expires September 3, 2004 [Page 10]
|
||||
^L
|
||||
Internet-Draft draft-herlein-avt-rtp-speex-00.txt March 3, 2004
|
||||
|
||||
|
||||
9. RTP Profile for Audio and Video Conferences with Minimal
|
||||
Control. Work in progress, draft-ietf-avt-profile-new-13.txt.
|
||||
|
||||
10. L. Walleij, "The application/ogg Media Type", RFC 3534, May
|
||||
2003.
|
||||
|
||||
|
||||
8.1 Informative References
|
||||
|
||||
11. Speexenc/speexdec, reference command-line encoder/decoder,
|
||||
Speex website, http://www.speex.org/
|
||||
|
||||
12. CELP, U.S. Federal Standard 1016. National Technical
|
||||
Information Service (NTIS) website, http://www.ntis.gov/
|
||||
|
||||
|
||||
9. Acknowledgments
|
||||
|
||||
The authors would like to thank Equivalence Pty Ltd of Australia
|
||||
for their assistance in attempting to standardize the use of Speex
|
||||
in H.323 applications, and for implementing Speex in their open
|
||||
source OpenH323 stack. The authors would also like to thank Brian
|
||||
C. Wiles <brian@streamcomm.com> of StreamComm for his assistance in
|
||||
developing the proposed standard for Speex use in H.323
|
||||
applications.
|
||||
|
||||
The authors would also like to thank the following members of the
|
||||
Speex and AVT communities for their input: Ross Finlayson,
|
||||
Federico Montesino Pouzols, Henning Schulzrinne, Magnus Westerlund.
|
||||
|
||||
|
||||
10. Author's Address
|
||||
|
||||
Greg Herlein <gherlein@herlein.com>
|
||||
2034 Filbert Street
|
||||
San Francisco, CA
|
||||
United States 94123
|
||||
|
||||
|
||||
Jean-Marc Valin <jean-marc.valin@hermes.usherb.ca>
|
||||
Department of Electrical and Computer Engineering
|
||||
University of Sherbrooke
|
||||
2500 blvd UniversitüÃüüÃé
|
||||
Sherbrooke, Quebec, Canada, J1K 2R1
|
||||
|
||||
|
||||
Simon MORLAT <simon.morlat@linphone.org>
|
||||
35, av de Vizille App 42
|
||||
38000 GRENOBLE
|
||||
FRANCE
|
||||
|
||||
|
||||
|
||||
|
||||
Herlein, Valin, et. al. Expires September 3, 2004 [Page 11]
|
||||
^L
|
||||
Internet-Draft draft-herlein-avt-rtp-speex-00.txt March 3, 2004
|
||||
|
||||
|
||||
Roger Hardiman <roger@freebsd.org>
|
||||
49 Nettleton Road
|
||||
Cheltenham
|
||||
Gloucestershire
|
||||
GL51 6NR
|
||||
England
|
||||
|
||||
|
||||
Phil Kerr <philkerr@elec.gla.ac.uk>
|
||||
Centre for Music Technology
|
||||
University of Glasgow
|
||||
Glasgow
|
||||
G12 8LT
|
||||
Scotland
|
||||
|
||||
|
||||
10. Full Copyright Statement
|
||||
|
||||
Copyright (C) The Internet Society (2003). All Rights Reserved.
|
||||
|
||||
This document and translations of it may be copied and furnished to
|
||||
others, and derivative works that comment on or otherwise explain it
|
||||
or assist in its implementation may be prepared, copied, published
|
||||
and distributed, in whole or in part, without restriction of any
|
||||
kind, provided that the above copyright notice and this paragraph are
|
||||
included on all such copies and derivative works. However, this
|
||||
document itself may not be modified in any way, such as by removing
|
||||
the copyright notice or references to the Internet Society or other
|
||||
Internet organizations, except as needed for the purpose of
|
||||
developing Internet standards in which case the procedures for
|
||||
copyrights defined in the Internet Standards process must be
|
||||
followed, or as required to translate it into languages other than
|
||||
English.
|
||||
|
||||
The limited permissions granted above are perpetual and will not be
|
||||
revoked by the Internet Society or its successors or assigns.
|
||||
|
||||
This document and the information contained herein is provided on an
|
||||
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
|
||||
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
|
||||
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
|
||||
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
Acknowledgement
|
||||
|
||||
Funding for the RFC Editor function is currently provided by the
|
||||
Internet Society.
|
||||
|
||||
|
||||
|
||||
|
||||
Herlein, Valin, et. al. Expires September 3, 2004 [Page 12]
|
||||
^L
|
||||
|
||||
|
||||
841
Engine/lib/speex/doc/draft-herlein-speex-rtp-profile-02.txt
Normal file
841
Engine/lib/speex/doc/draft-herlein-speex-rtp-profile-02.txt
Normal file
|
|
@ -0,0 +1,841 @@
|
|||
|
||||
|
||||
AVT Working Group G. Herlein
|
||||
Internet-Draft S. Morlat
|
||||
Expires: October 3, 2005 J. Jean-Marc
|
||||
R. Hardiman
|
||||
P. Kerr
|
||||
April 04, 2005
|
||||
|
||||
|
||||
draft-herlein-speex-rtp-profile-02
|
||||
RTP Payload Format for the Speex Codec
|
||||
|
||||
Status of this Memo
|
||||
|
||||
This document is an Internet-Draft and is subject to all provisions
|
||||
of section 3 of RFC 3667. By submitting this Internet-Draft, each
|
||||
author represents that any applicable patent or other IPR claims of
|
||||
which he or she is aware have been or will be disclosed, and any of
|
||||
which he or she become aware will be disclosed, in accordance with
|
||||
RFC 3668.
|
||||
|
||||
Internet-Drafts are working documents of the Internet Engineering
|
||||
Task Force (IETF), its areas, and its working groups. Note that
|
||||
other groups may also distribute working documents as
|
||||
Internet-Drafts.
|
||||
|
||||
Internet-Drafts are draft documents valid for a maximum of six months
|
||||
and may be updated, replaced, or obsoleted by other documents at any
|
||||
time. It is inappropriate to use Internet-Drafts as reference
|
||||
material or to cite them other than as "work in progress."
|
||||
|
||||
The list of current Internet-Drafts can be accessed at
|
||||
http://www.ietf.org/ietf/1id-abstracts.txt.
|
||||
|
||||
The list of Internet-Draft Shadow Directories can be accessed at
|
||||
http://www.ietf.org/shadow.html.
|
||||
|
||||
This Internet-Draft will expire on October 3, 2005.
|
||||
|
||||
Copyright Notice
|
||||
|
||||
Copyright (C) The Internet Society (2005).
|
||||
|
||||
Abstract
|
||||
|
||||
Speex is an open-source voice codec suitable for use in Voice over IP
|
||||
(VoIP) type applications. This document describes the payload format
|
||||
for Speex generated bit streams within an RTP packet. Also included
|
||||
here are the necessary details for the use of Speex with the Session
|
||||
Description Protocol (SDP) and a preliminary method of using Speex
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires October 3, 2005 [Page 1]
|
||||
|
||||
Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
|
||||
|
||||
|
||||
within H.323 applications.
|
||||
|
||||
Table of Contents
|
||||
|
||||
1. Conventions used in this document . . . . . . . . . . . . . 3
|
||||
2. Overview of the Speex Codec . . . . . . . . . . . . . . . . 3
|
||||
3. RTP payload format for Speex . . . . . . . . . . . . . . . . 3
|
||||
4. RTP Header . . . . . . . . . . . . . . . . . . . . . . . . . 3
|
||||
5. Speex payload . . . . . . . . . . . . . . . . . . . . . . . 5
|
||||
6. Example Speex packet . . . . . . . . . . . . . . . . . . . . 6
|
||||
7. Multiple Speex frames in a RTP packet . . . . . . . . . . . 6
|
||||
8. MIME registration of Speex . . . . . . . . . . . . . . . . . 7
|
||||
9. SDP usage of Speex . . . . . . . . . . . . . . . . . . . . . 8
|
||||
10. ITU H.323/H.245 Use of Speex . . . . . . . . . . . . . . . . 10
|
||||
11. NonStandardMessage format . . . . . . . . . . . . . . . . . 10
|
||||
12. RTP Payload Types . . . . . . . . . . . . . . . . . . . . . 11
|
||||
13. Security Considerations . . . . . . . . . . . . . . . . . . 11
|
||||
14. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 12
|
||||
15. References . . . . . . . . . . . . . . . . . . . . . . . . . 12
|
||||
15.1 Normative References . . . . . . . . . . . . . . . . . . . 12
|
||||
15.2 Informative References . . . . . . . . . . . . . . . . . . 13
|
||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 13
|
||||
Intellectual Property and Copyright Statements . . . . . . . 15
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires October 3, 2005 [Page 2]
|
||||
|
||||
Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
|
||||
|
||||
|
||||
1. Conventions used in this document
|
||||
|
||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
|
||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
|
||||
document are to be interpreted as described in RFC 2119 [1].
|
||||
|
||||
2. Overview of the Speex Codec
|
||||
|
||||
Speex is based on the CELP [10] encoding technique with support for
|
||||
either narrowband (nominal 8kHz), wideband (nominal 16kHz) or
|
||||
ultra-wideband (nominal 32kHz), and (non-optimal) rates up to 48 kHz
|
||||
sampling also available. The main characteristics can be summarized
|
||||
as follows:
|
||||
|
||||
o Free software/open-source
|
||||
o Integration of wideband and narrowband in the same bit-stream
|
||||
o Wide range of bit-rates available
|
||||
o Dynamic bit-rate switching and variable bit-rate (VBR)
|
||||
o Voice Activity Detection (VAD, integrated with VBR)
|
||||
o Variable complexity
|
||||
|
||||
3. RTP payload format for Speex
|
||||
|
||||
For RTP based transportation of Speex encoded audio the standard RTP
|
||||
header [2] is followed by one or more payload data blocks. An
|
||||
optional padding terminator may also be used.
|
||||
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| RTP Header |
|
||||
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
| one or more frames of Speex .... |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| one or more frames of Speex .... | padding |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|
||||
|
||||
4. RTP Header
|
||||
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|V=2|P|X| CC |M| PT | sequence number |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| timestamp |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| synchronization source (SSRC) identifier |
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires October 3, 2005 [Page 3]
|
||||
|
||||
Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
|
||||
|
||||
|
||||
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
| contributing source (CSRC) identifiers |
|
||||
| ... |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|
||||
The RTP header begins with an octet of fields (V, P, X, and CC) to
|
||||
support specialized RTP uses (see [2] and [7] for details). For
|
||||
Speex the following values are used.
|
||||
|
||||
Version (V): 2 bits
|
||||
|
||||
This field identifies the version of RTP. The version used by this
|
||||
specification is two [2].
|
||||
|
||||
Padding (P): 1 bit
|
||||
|
||||
If the padding bit is set, the packet contains one or more additional
|
||||
padding octets at the end which are not part of the payload. P is
|
||||
set if the total packet size is less than the MTU.
|
||||
|
||||
Extension (X): 1 bit
|
||||
|
||||
If the extension, X, bit is set, the fixed header MUST be followed by
|
||||
exactly one header extension, with a format defined in Section 5.3.1.
|
||||
of [2].
|
||||
|
||||
CSRC count (CC): 4 bits
|
||||
|
||||
The CSRC count contains the number of CSRC identifiers.
|
||||
|
||||
Marker (M): 1 bit
|
||||
|
||||
The M bit indicates if the packet contains comfort noise. This field
|
||||
is used in conjunction with the cng SDP attribute and is detailed
|
||||
further in section 5 below. In normal usage this bit is set if the
|
||||
packet contains comfort noise.
|
||||
|
||||
Payload Type (PT): 7 bits
|
||||
|
||||
An RTP profile for a class of applications is expected to assign a
|
||||
payload type for this format, or a dynamically allocated payload type
|
||||
SHOULD be chosen which designates the payload as Speex.
|
||||
|
||||
Sequence number: 16 bits
|
||||
|
||||
The sequence number increments by one for each RTP data packet sent,
|
||||
and may be used by the receiver to detect packet loss and to restore
|
||||
packet sequence. This field is detailed further in [2].
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires October 3, 2005 [Page 4]
|
||||
|
||||
Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
|
||||
|
||||
|
||||
Timestamp: 32 bits
|
||||
|
||||
A timestamp representing the sampling time of the first sample of the
|
||||
first Speex packet in the RTP packet. The clock frequency MUST be
|
||||
set to the sample rate of the encoded audio data. Speex uses 20 msec
|
||||
frames and a variable sampling rate clock. The RTP timestamp MUST be
|
||||
in units of 1/X of a second where X is the sample rate used. Speex
|
||||
uses a nominal 8kHz sampling rate for narrowband use, a nominal 16kHz
|
||||
sampling rate for wideband use, and a nominal 32kHz sampling rate for
|
||||
ultra-wideband use.
|
||||
|
||||
SSRC/CSRC identifiers:
|
||||
|
||||
These two fields, 32 bits each with one SSRC field and a maximum of
|
||||
16 CSRC fields, are as defined in [2].
|
||||
|
||||
5. Speex payload
|
||||
|
||||
For the purposes of packetizing the bit stream in RTP, it is only
|
||||
necessary to consider the sequence of bits as output by the Speex
|
||||
encoder [9], and present the same sequence to the decoder. The
|
||||
payload format described here maintains this sequence.
|
||||
|
||||
A typical Speex frame, encoded at the maximum bitrate, is approx.
|
||||
110 octets and the total number of Speex frames SHOULD be kept less
|
||||
than the path MTU to prevent fragmentation. Speex frames MUST NOT be
|
||||
fragmented across multiple RTP packets,
|
||||
|
||||
An RTP packet MAY contain Speex frames of the same bit rate or of
|
||||
varying bit rates, since the bit-rate for a frame is conveyed in band
|
||||
with the signal.
|
||||
|
||||
The encoding and decoding algorithm can change the bit rate at any 20
|
||||
msec frame boundary, with the bit rate change notification provided
|
||||
in-band with the bit stream. Each frame contains both "mode"
|
||||
(narrowband, wideband or ultra-wideband) and "sub-mode" (bit-rate)
|
||||
information in the bit stream. No out-of-band notification is
|
||||
required for the decoder to process changes in the bit rate sent by
|
||||
the encoder.
|
||||
|
||||
It is RECOMMENDED that values of 8000, 16000 and 32000 be used for
|
||||
normal internet telephony applications, though the sample rate is
|
||||
supported at rates as low as 6000 Hz and as high as 48 kHz.
|
||||
|
||||
The RTP payload MUST be padded to provide an integer number of octets
|
||||
as the payload length. These padding bits are LSB aligned in network
|
||||
octet order and consist of a 0 followed by all ones (until the end of
|
||||
the octet). This padding is only required for the last frame in the
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires October 3, 2005 [Page 5]
|
||||
|
||||
Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
|
||||
|
||||
|
||||
packet, and only to ensure the packet contents ends on an octet
|
||||
boundary.
|
||||
|
||||
6. Example Speex packet
|
||||
|
||||
In the example below we have a single Speex frame with 5 bits of
|
||||
padding to ensure the packet size falls on an octet boundary.
|
||||
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|V=2|P|X| CC |M| PT | sequence number |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| timestamp |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| synchronization source (SSRC) identifier |
|
||||
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
| contributing source (CSRC) identifiers |
|
||||
| ... |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| ..speex data.. |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| ..speex data.. |0 1 1 1 1|
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|
||||
|
||||
7. Multiple Speex frames in a RTP packet
|
||||
|
||||
Below is an example of two Speex frames contained within one RTP
|
||||
packet. The Speex frame length in this example fall on an octet
|
||||
boundary so there is no padding.
|
||||
|
||||
Speex codecs [9] are able to detect the the bitrate from the payload
|
||||
and are responsible for detecting the 20 msec boundaries between each
|
||||
frame.
|
||||
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|V=2|P|X| CC |M| PT | sequence number |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| timestamp |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires October 3, 2005 [Page 6]
|
||||
|
||||
Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
|
||||
|
||||
|
||||
| synchronization source (SSRC) identifier |
|
||||
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
| contributing source (CSRC) identifiers |
|
||||
| ... |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| ..speex data.. |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| ..speex data.. | ..speex data.. |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| ..speex data.. |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|
||||
|
||||
8. MIME registration of Speex
|
||||
|
||||
Full definition of the MIME [3] type for Speex will be part of the
|
||||
Ogg Vorbis MIME type definition application [8].
|
||||
|
||||
MIME media type name: audio
|
||||
|
||||
MIME subtype: speex
|
||||
|
||||
Optional parameters:
|
||||
|
||||
Required parameters: to be included in the Ogg MIME specification.
|
||||
|
||||
Encoding considerations:
|
||||
|
||||
Security Considerations:
|
||||
|
||||
See Section 6 of RFC 3047.
|
||||
|
||||
Interoperability considerations: none
|
||||
|
||||
Published specification:
|
||||
|
||||
Applications which use this media type:
|
||||
|
||||
Additional information: none
|
||||
|
||||
Person & email address to contact for further information:
|
||||
|
||||
Greg Herlein <gherlein@herlein.com>
|
||||
Jean-Marc Valin <jean-marc.valin@hermes.usherb.ca>
|
||||
|
||||
Intended usage: COMMON
|
||||
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires October 3, 2005 [Page 7]
|
||||
|
||||
Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
|
||||
|
||||
|
||||
Author/Change controller:
|
||||
|
||||
Author: Greg Herlein <gherlein@herlein.com>
|
||||
Change controller: Greg Herlein <gherlein@herlein.com>
|
||||
Change controller: IETF AVT Working Group
|
||||
|
||||
This transport type signifies that the content is to be interpreted
|
||||
according to this document if the contents are transmitted over RTP.
|
||||
Should this transport type appear over a lossless streaming protocol
|
||||
such as TCP, the content encapsulation should be interpreted as an
|
||||
Ogg Stream in accordance with [8], with the exception that the
|
||||
content of the Ogg Stream may be assumed to be Speex audio and Speex
|
||||
audio only.
|
||||
|
||||
9. SDP usage of Speex
|
||||
|
||||
When conveying information by SDP [4], the encoding name MUST be set
|
||||
to "speex". An example of the media representation in SDP for
|
||||
offering a single channel of Speex at 8000 samples per second might
|
||||
be:
|
||||
|
||||
m=audio 8088 RTP/AVP 97
|
||||
a=rtpmap:97 speex/8000
|
||||
|
||||
Note that the RTP payload type code of 97 is defined in this media
|
||||
definition to be 'mapped' to the speex codec at an 8kHz sampling
|
||||
frequency using the 'a=rtpmap' line. Any number from 96 to 127 could
|
||||
have been chosen (the allowed range for dynamic types).
|
||||
|
||||
The value of the sampling frequency is typically 8000 for narrow band
|
||||
operation, 16000 for wide band operation, and 32000 for ultra-wide
|
||||
band operation.
|
||||
|
||||
If for some reason the offerer has bandwidth limitations, the client
|
||||
may use the "b=" header, as explained in SDP [4]. The following
|
||||
example illustrates the case where the offerer cannot receive more
|
||||
than 10 kbit/s.
|
||||
|
||||
m=audio 8088 RTP/AVP 97
|
||||
b=AS:10
|
||||
a=rtmap:97 speex/8000
|
||||
|
||||
In this case, if the remote part agrees, it should configure its
|
||||
Speex encoder so that it does not use modes that produce more than 10
|
||||
kbit/s. Note that the "b=" constraint also applies on all payload
|
||||
types that may be proposed in the media line ("m=").
|
||||
|
||||
An other way to make recommendations to the remote Speex encoder is
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires October 3, 2005 [Page 8]
|
||||
|
||||
Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
|
||||
|
||||
|
||||
to use its specific parameters via the a=fmtp: directive. The
|
||||
following parameters are defined for use in this way:
|
||||
|
||||
ptime: duration of each packet in milliseconds.
|
||||
|
||||
sr: actual sample rate in Hz.
|
||||
|
||||
ebw: encoding bandwidth - either 'narrow' or 'wide' or 'ultra'
|
||||
(corresponds to nominal 8000, 16000, and 32000 Hz sampling rates).
|
||||
|
||||
vbr: variable bit rate - either 'on' 'off' or 'vad' (defaults
|
||||
to off). If on, variable bit rate is enabled. If off, disabled.
|
||||
If set to 'vad' then constant bit rate is used but silence will be
|
||||
encoded with special short frames to indicate a lack of voice for
|
||||
that period.
|
||||
|
||||
cng: comfort noise generation - either 'on' or 'off'. If off
|
||||
then silence frames will be silent; if 'on' then those frames will
|
||||
be filled with comfort noise.
|
||||
|
||||
mode: Speex encoding mode. Can be {1,2,3,4,5,6,any} defaults to
|
||||
3 in narrowband, 6 in wide and ultra-wide.
|
||||
|
||||
penh: use of perceptual enhancement. 1 indicates to the decoder
|
||||
that perceptual enhancement is recommended, 0 indicates that it is
|
||||
not. Defaults to on (1).
|
||||
|
||||
|
||||
Examples:
|
||||
|
||||
m=audio 8008 RTP/AVP 97
|
||||
a=rtpmap:97 speex/8000
|
||||
a=fmtp:97 mode=4
|
||||
|
||||
This examples illustrate an offerer that wishes to receive a Speex
|
||||
stream at 8000Hz, but only using speex mode 3.
|
||||
|
||||
The offerer may suggest to the remote decoder to activate its
|
||||
perceptual enhancement filter like this:
|
||||
|
||||
m=audio 8088 RTP/AVP 97
|
||||
a=rtmap:97 speex/8000
|
||||
a=fmtp:97 penh=1
|
||||
|
||||
Several Speex specific parameters can be given in a single a=fmtp
|
||||
line provided that they are separated by a semi-colon:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires October 3, 2005 [Page 9]
|
||||
|
||||
Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
|
||||
|
||||
|
||||
a=fmtp:97 mode=any;penh=1
|
||||
|
||||
The offerer may indicate that it wishes to send variable bit rate
|
||||
frames with comfort noise:
|
||||
|
||||
m=audio 8088 RTP/AVP 97
|
||||
a=rtmap:97 speex/8000
|
||||
a=fmtp:97 vbr=on;cng=on
|
||||
|
||||
The "ptime" attribute is used to denote the packetization interval
|
||||
(ie, how many milliseconds of audio is encoded in a single RTP
|
||||
packet). Since Speex uses 20 msec frames, ptime values of multiples
|
||||
of 20 denote multiple Speex frames per packet. Values of ptime which
|
||||
are not multiples of 20 MUST be ignored and clients MUST use the
|
||||
default value of 20 instead.
|
||||
|
||||
In the example below the ptime value is set to 40, indicating that
|
||||
there are 2 frames in each packet.
|
||||
|
||||
m=audio 8008 RTP/AVP 97
|
||||
a=rtpmap:97 speex/8000
|
||||
a=ptime:40
|
||||
|
||||
Note that the ptime parameter applies to all payloads listed in the
|
||||
media line and is not used as part of an a=fmtp directive.
|
||||
|
||||
Values of ptime not multiple of 20 msec are meaningless, so the
|
||||
receiver of such ptime values MUST ignore them. If during the life
|
||||
of an RTP session the ptime value changes, when there are multiple
|
||||
Speex frames for example, the SDP value must also reflect the new
|
||||
value.
|
||||
|
||||
Care must be taken when setting the value of ptime so that the RTP
|
||||
packet size does not exceed the path MTU.
|
||||
|
||||
10. ITU H.323/H.245 Use of Speex
|
||||
|
||||
Application is underway to make Speex a standard ITU codec. However,
|
||||
until that is finalized, Speex MAY be used in H.323 [5] by using a
|
||||
non-standard codec block definition in the H.245 [6] codec capability
|
||||
negotiations.
|
||||
|
||||
11. NonStandardMessage format
|
||||
|
||||
For Speex use in H.245 [6] based systems, the fields in the
|
||||
NonStandardMessage should be:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires October 3, 2005 [Page 10]
|
||||
|
||||
Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
|
||||
|
||||
|
||||
t35CountryCode = Hex: B5
|
||||
t35Extension = Hex: 00
|
||||
manufacturerCode = Hex: 0026
|
||||
[Length of the Binary Sequence (8 bit number)]
|
||||
[Binary Sequence consisting of an ASCII string, no NULL
|
||||
terminator]
|
||||
|
||||
The binary sequence is an ascii string merely for ease of use. The
|
||||
string is not null terminated. The format of this string is
|
||||
|
||||
speex [optional variables]
|
||||
|
||||
The optional variables are identical to those used for the SDP a=fmtp
|
||||
strings discussed in section 5 above. The string is built to be all
|
||||
on one line, each key-value pair separated by a semi-colon. The
|
||||
optional variables MAY be omitted, which causes the default values to
|
||||
be assumed. They are:
|
||||
|
||||
ebw=narrow;mode=3;vbr=off;cng=off;ptime=20;sr=8000;penh=no;
|
||||
|
||||
The fifth octet of the block is the length of the binary sequence.
|
||||
|
||||
NOTE: this method can result in the advertising of a large number of
|
||||
Speex 'codecs' based on the number of variables possible. For most
|
||||
VoIP applications, use of the default binary sequence of 'speex' is
|
||||
RECOMMENDED to be used in addition to all other options. This
|
||||
maximizes the chances that two H.323 based applications that support
|
||||
Speex can find a mutual codec.
|
||||
|
||||
12. RTP Payload Types
|
||||
|
||||
Dynamic payload type codes MUST be negotiated 'out-of-band' for the
|
||||
assignment of a dynamic payload type from the range of 96-127. H.323
|
||||
applications MUST use the H.245 H2250LogicalChannelParameters
|
||||
encoding to accomplish this.
|
||||
|
||||
13. Security Considerations
|
||||
|
||||
RTP packets using the payload format defined in this specification
|
||||
are subject to the security considerations discussed in the RTP
|
||||
specification [2], and any appropriate RTP profile. This implies
|
||||
that confidentiality of the media streams is achieved by encryption.
|
||||
Because the data compression used with this payload format is applied
|
||||
end-to-end, encryption may be performed after compression so there is
|
||||
no conflict between the two operations.
|
||||
|
||||
A potential denial-of-service threat exists for data encodings using
|
||||
compression techniques that have non-uniform receiver-end
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires October 3, 2005 [Page 11]
|
||||
|
||||
Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
|
||||
|
||||
|
||||
computational load. The attacker can inject pathological datagrams
|
||||
into the stream which are complex to decode and cause the receiver to
|
||||
be overloaded. However, this encoding does not exhibit any
|
||||
significant non-uniformity.
|
||||
|
||||
As with any IP-based protocol, in some circumstances a receiver may
|
||||
be overloaded simply by the receipt of too many packets, either
|
||||
desired or undesired. Network-layer authentication may be used to
|
||||
discard packets from undesired sources, but the processing cost of
|
||||
the authentication itself may be too high.
|
||||
|
||||
14. Acknowledgments
|
||||
|
||||
The authors would like to thank Equivalence Pty Ltd of Australia for
|
||||
their assistance in attempting to standardize the use of Speex in
|
||||
H.323 applications, and for implementing Speex in their open source
|
||||
OpenH323 stack. The authors would also like to thank Brian C. Wiles
|
||||
<brian@streamcomm.com> of StreamComm for his assistance in developing
|
||||
the proposed standard for Speex use in H.323 applications.
|
||||
|
||||
The authors would also like to thank the following members of the
|
||||
Speex and AVT communities for their input: Ross Finlayson, Federico
|
||||
Montesino Pouzols, Henning Schulzrinne, Magnus Westerlund.
|
||||
|
||||
15. References
|
||||
|
||||
15.1 Normative References
|
||||
|
||||
[1] Bradner, S., "Key words for use in RFCs to Indicate Requirement
|
||||
Levels", RFC 2119.
|
||||
|
||||
[2] Schulzrinne, H., Casner, S., Frederick, R. and V. Jacobson,
|
||||
"RTP: A Transport Protocol for real-time applications", RFC
|
||||
3550.
|
||||
|
||||
[3] "Multipurpose Internet Mail Extensions (MIME) Part One: Format
|
||||
of Internet Message Bodies", RFC 2045.
|
||||
|
||||
[4] Jacobson, V. and M. Handley, "SDP: Session Description
|
||||
Protocol", RFC 2327.
|
||||
|
||||
[5] "Packet-based Multimedia Communications Systems", ITU-T
|
||||
Recommendation H.323.
|
||||
|
||||
[6] "Control of communications between Visual Telephone Systems and
|
||||
Terminal Equipment", ITU-T Recommendation H.245.
|
||||
|
||||
[7] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and Video
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires October 3, 2005 [Page 12]
|
||||
|
||||
Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
|
||||
|
||||
|
||||
Conferences with Minimal Control.", RFC 3551.
|
||||
|
||||
[8] Walleij, L., "The application/ogg Media Type", RFC 3534.
|
||||
|
||||
15.2 Informative References
|
||||
|
||||
[9] "Speexenc/speexdec, reference command-line encoder/decoder",
|
||||
Speex website http://www.speex.org/.
|
||||
|
||||
[10] "CELP, U.S. Federal Standard 1016.", National Technical
|
||||
Information Service (NTIS) website http://www.ntis.gov/.
|
||||
|
||||
|
||||
Authors' Addresses
|
||||
|
||||
Greg Herlein
|
||||
2034 Filbert Street
|
||||
San Francisco, California 94123
|
||||
United States
|
||||
|
||||
EMail: gherlein@herlein.com
|
||||
|
||||
|
||||
Simon Morlat
|
||||
35, av de Vizille App 42
|
||||
Grenoble 38000
|
||||
France
|
||||
|
||||
EMail: simon.morlat@linphone.org
|
||||
|
||||
|
||||
Jean-Marc Valin
|
||||
Department of Electrical and Computer Engineering
|
||||
University of Sherbrooke
|
||||
2500 blvd Universite
|
||||
Sherbrooke, Quebec J1K 2R1
|
||||
Canada
|
||||
|
||||
EMail: jean-marc.valin@hermes.usherb.ca
|
||||
|
||||
|
||||
Roger Hardiman
|
||||
49 Nettleton Road
|
||||
Cheltenham, Gloucestershire GL51 6NR
|
||||
England
|
||||
|
||||
EMail: roger@freebsd.org
|
||||
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires October 3, 2005 [Page 13]
|
||||
|
||||
Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
|
||||
|
||||
|
||||
Phil Kerr
|
||||
England
|
||||
|
||||
EMail: phil@plus24.com
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires October 3, 2005 [Page 14]
|
||||
|
||||
Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
|
||||
|
||||
|
||||
Intellectual Property Statement
|
||||
|
||||
The IETF takes no position regarding the validity or scope of any
|
||||
Intellectual Property Rights or other rights that might be claimed to
|
||||
pertain to the implementation or use of the technology described in
|
||||
this document or the extent to which any license under such rights
|
||||
might or might not be available; nor does it represent that it has
|
||||
made any independent effort to identify any such rights. Information
|
||||
on the procedures with respect to rights in RFC documents can be
|
||||
found in BCP 78 and BCP 79.
|
||||
|
||||
Copies of IPR disclosures made to the IETF Secretariat and any
|
||||
assurances of licenses to be made available, or the result of an
|
||||
attempt made to obtain a general license or permission for the use of
|
||||
such proprietary rights by implementers or users of this
|
||||
specification can be obtained from the IETF on-line IPR repository at
|
||||
http://www.ietf.org/ipr.
|
||||
|
||||
The IETF invites any interested party to bring to its attention any
|
||||
copyrights, patents or patent applications, or other proprietary
|
||||
rights that may cover technology that may be required to implement
|
||||
this standard. Please address the information to the IETF at
|
||||
ietf-ipr@ietf.org.
|
||||
|
||||
|
||||
Disclaimer of Validity
|
||||
|
||||
This document and the information contained herein are provided on an
|
||||
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
|
||||
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
|
||||
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
|
||||
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
|
||||
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
Copyright Statement
|
||||
|
||||
Copyright (C) The Internet Society (2005). This document is subject
|
||||
to the rights, licenses and restrictions contained in BCP 78, and
|
||||
except as set forth therein, the authors retain all their rights.
|
||||
|
||||
|
||||
Acknowledgment
|
||||
|
||||
Funding for the RFC Editor function is currently provided by the
|
||||
Internet Society.
|
||||
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires October 3, 2005 [Page 15]
|
||||
|
||||
|
||||
1232
Engine/lib/speex/doc/draft-herlein-speex-rtp-profile-03.txt
Normal file
1232
Engine/lib/speex/doc/draft-herlein-speex-rtp-profile-03.txt
Normal file
File diff suppressed because it is too large
Load diff
815
Engine/lib/speex/doc/draft-herlein-speex-rtp-profile-03.xml
Normal file
815
Engine/lib/speex/doc/draft-herlein-speex-rtp-profile-03.xml
Normal file
|
|
@ -0,0 +1,815 @@
|
|||
<?xml version='1.0'?>
|
||||
<!DOCTYPE rfc SYSTEM 'rfc2629.dtd'>
|
||||
<?rfc toc="yes" ?>
|
||||
|
||||
<rfc ipr="full3667" docName="RTP Payload Format for the Speex Codec">
|
||||
|
||||
<front>
|
||||
<title>draft-herlein-speex-rtp-profile-03</title>
|
||||
|
||||
<author initials="G" surname="Herlein" fullname="Greg Herlein">
|
||||
<organization></organization>
|
||||
<address>
|
||||
<email>gherlein@herlein.com</email>
|
||||
<postal>
|
||||
<street>2034 Filbert Street</street>
|
||||
<city>San Francisco</city>
|
||||
<region>California</region>
|
||||
<code>94123</code>
|
||||
<country>United States</country>
|
||||
</postal>
|
||||
</address>
|
||||
</author>
|
||||
|
||||
<author initials="S" surname="Morlat" fullname="Simon Morlat">
|
||||
<address>
|
||||
<email>simon.morlat@linphone.org</email>
|
||||
<postal>
|
||||
<street>35, av de Vizille App 42</street>
|
||||
<city>Grenoble</city>
|
||||
<code>38000</code>
|
||||
<country>France</country>
|
||||
</postal>
|
||||
</address>
|
||||
</author>
|
||||
|
||||
<author initials="J" surname="Jean-Marc" fullname="Jean-Marc Valin">
|
||||
<address>
|
||||
<email>jean-marc.valin@hermes.usherb.ca</email>
|
||||
<postal>
|
||||
<street>Department of Electrical and Computer Engineering</street>
|
||||
<street>University of Sherbrooke</street>
|
||||
<street>2500 blvd Universite</street>
|
||||
<city>Sherbrooke</city>
|
||||
<region>Quebec</region>
|
||||
<code>J1K 2R1</code>
|
||||
<country>Canada</country>
|
||||
</postal>
|
||||
</address>
|
||||
</author>
|
||||
|
||||
<author initials="R" surname="Hardiman" fullname="Roger Hardiman">
|
||||
<address>
|
||||
<email>roger@freebsd.org</email>
|
||||
<postal>
|
||||
<street>49 Nettleton Road</street>
|
||||
<city>Cheltenham</city>
|
||||
<region>Gloucestershire</region>
|
||||
<code>GL51 6NR</code>
|
||||
<country>England</country>
|
||||
</postal>
|
||||
</address>
|
||||
</author>
|
||||
|
||||
|
||||
<author initials="P" surname="Kerr" fullname="Phil Kerr">
|
||||
<address>
|
||||
<email>phil@plus24.com</email>
|
||||
<postal>
|
||||
<country>England</country>
|
||||
</postal>
|
||||
</address>
|
||||
</author>
|
||||
|
||||
<date day="01" month="January" year="2005" />
|
||||
|
||||
<area>General</area>
|
||||
<workgroup>AVT Working Group</workgroup>
|
||||
<keyword>I-D</keyword>
|
||||
|
||||
<keyword>Internet-Draft</keyword>
|
||||
<keyword>Speex</keyword>
|
||||
<keyword>RTP</keyword>
|
||||
<abstract>
|
||||
<t>
|
||||
Speex is an open-source voice codec suitable for use in Voice over
|
||||
IP (VoIP) type applications. This document describes the payload
|
||||
format for Speex generated bit streams within an RTP packet. Also
|
||||
included here are the necessary details for the use of Speex with
|
||||
the Session Description Protocol (SDP) and a preliminary method of
|
||||
using Speex within H.323 applications.
|
||||
</t>
|
||||
</abstract>
|
||||
</front>
|
||||
|
||||
<middle>
|
||||
|
||||
<section anchor="Conventions used in this document" title="Conventions used in this document">
|
||||
<t>
|
||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
|
||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
|
||||
document are to be interpreted as described in RFC 2119 <xref target="rfc2119"></xref>.
|
||||
</t>
|
||||
</section>
|
||||
|
||||
<section anchor="Overview of the Speex Codec" title="Overview of the Speex Codec">
|
||||
|
||||
<t>
|
||||
Speex is based on the CELP <xref target="CELP"></xref> encoding technique with support for
|
||||
either narrowband (nominal 8kHz), wideband (nominal 16kHz) or
|
||||
ultra-wideband (nominal 32kHz), and (non-optimal) rates up to 48 kHz
|
||||
sampling also available. The main characteristics can be summarized
|
||||
as follows:
|
||||
</t>
|
||||
|
||||
<t>
|
||||
<list style="symbols">
|
||||
<t>Free software/open-source</t>
|
||||
<t>Integration of wideband and narrowband in the same bit-stream</t>
|
||||
<t>Wide range of bit-rates available</t>
|
||||
<t>Dynamic bit-rate switching and variable bit-rate (VBR)</t>
|
||||
<t>Voice Activity Detection (VAD, integrated with VBR)</t>
|
||||
<t>Variable complexity</t>
|
||||
</list>
|
||||
</t>
|
||||
|
||||
</section>
|
||||
|
||||
<section anchor="RTP payload format for Speex" title="RTP payload format for Speex">
|
||||
|
||||
<t>
|
||||
For RTP based transportation of Speex encoded audio the standard
|
||||
RTP header [2] is followed by one or more payload data blocks.
|
||||
An optional padding terminator may also be used.
|
||||
</t>
|
||||
<artwork><![CDATA[
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| RTP Header |
|
||||
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
| one or more frames of Speex .... |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| one or more frames of Speex .... | padding |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
]]></artwork>
|
||||
|
||||
</section>
|
||||
|
||||
<section anchor="RTP Header" title="RTP Header">
|
||||
|
||||
<artwork><![CDATA[
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|V=2|P|X| CC |M| PT | sequence number |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| timestamp |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| synchronization source (SSRC) identifier |
|
||||
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
| contributing source (CSRC) identifiers |
|
||||
| ... |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
]]></artwork>
|
||||
|
||||
<t>
|
||||
The RTP header begins with an octet of fields (V, P, X, and CC) to
|
||||
support specialized RTP uses (see <xref target="rfc3550"></xref> and <xref target="rfc3551"></xref> for details). For
|
||||
Speex the following values are used.
|
||||
</t>
|
||||
|
||||
<t>Version (V): 2 bits</t><t>
|
||||
This field identifies the version of RTP. The version
|
||||
used by this specification is two <xref target="rfc3550"></xref>.
|
||||
</t>
|
||||
|
||||
<t>Padding (P): 1 bit</t><t>
|
||||
If the padding bit is set, the packet contains one or more
|
||||
additional padding octets at the end which are not part of
|
||||
the payload. P is set if the total packet size is less than
|
||||
the MTU.
|
||||
</t>
|
||||
|
||||
<t>Extension (X): 1 bit</t><t>
|
||||
If the extension, X, bit is set, the fixed header MUST be
|
||||
followed by exactly one header extension, with a format defined
|
||||
in Section 5.3.1. of <xref target="rfc3550"></xref>.
|
||||
</t>
|
||||
|
||||
<t>CSRC count (CC): 4 bits</t><t>
|
||||
The CSRC count contains the number of CSRC identifiers.
|
||||
</t>
|
||||
|
||||
<t>Marker (M): 1 bit</t><t>
|
||||
The M bit indicates if the packet contains comfort noise. This
|
||||
field is used in conjunction with the cng SDP attribute and is
|
||||
detailed further in section 5 below. In normal usage this bit
|
||||
is set if the packet contains comfort noise.
|
||||
</t>
|
||||
|
||||
<t>Payload Type (PT): 7 bits</t><t>
|
||||
An RTP profile for a class of applications is expected to assign
|
||||
a payload type for this format, or a dynamically allocated
|
||||
payload type SHOULD be chosen which designates the payload as
|
||||
Speex.
|
||||
</t>
|
||||
|
||||
<t>Sequence number: 16 bits</t><t>
|
||||
The sequence number increments by one for each RTP data packet
|
||||
sent, and may be used by the receiver to detect packet loss and
|
||||
to restore packet sequence. This field is detailed further in
|
||||
<xref target="rfc3550"></xref>.
|
||||
</t>
|
||||
|
||||
<t>Timestamp: 32 bits</t><t>
|
||||
A timestamp representing the sampling time of the first sample of
|
||||
the first Speex packet in the RTP packet. The clock frequency
|
||||
MUST be set to the sample rate of the encoded audio data.
|
||||
|
||||
Speex uses 20 msec frames and a variable sampling rate clock.
|
||||
The RTP timestamp MUST be in units of 1/X of a second where X
|
||||
is the sample rate used. Speex uses a nominal 8kHz sampling rate
|
||||
for narrowband use, a nominal 16kHz sampling rate for wideband use,
|
||||
and a nominal 32kHz sampling rate for ultra-wideband use.
|
||||
</t>
|
||||
|
||||
<t>SSRC/CSRC identifiers:</t><t>
|
||||
These two fields, 32 bits each with one SSRC field and a maximum
|
||||
of 16 CSRC fields, are as defined in <xref target="rfc3550"></xref>.
|
||||
</t>
|
||||
|
||||
</section>
|
||||
|
||||
<section anchor="Speex payload" title="Speex payload">
|
||||
|
||||
<t>
|
||||
For the purposes of packetizing the bit stream in RTP, it is only
|
||||
necessary to consider the sequence of bits as output by the Speex
|
||||
encoder <xref target="speexenc"></xref>, and present the same sequence to the decoder. The
|
||||
payload format described here maintains this sequence.
|
||||
</t>
|
||||
|
||||
<t>
|
||||
A typical Speex frame, encoded at the maximum bitrate, is approx.
|
||||
110 octets and the total number of Speex frames SHOULD be kept
|
||||
less than the path MTU to prevent fragmentation. Speex frames MUST
|
||||
NOT be fragmented across multiple RTP packets,
|
||||
</t>
|
||||
|
||||
<t>
|
||||
An RTP packet MAY contain Speex frames of the same bit rate or of
|
||||
varying bit rates, since the bit-rate for a frame is conveyed in
|
||||
band with the signal.
|
||||
</t>
|
||||
|
||||
<t>
|
||||
The encoding and decoding algorithm can change the bit rate at any
|
||||
20 msec frame boundary, with the bit rate change notification provided
|
||||
in-band with the bit stream. Each frame contains both "mode"
|
||||
(narrowband, wideband or ultra-wideband) and "sub-mode" (bit-rate)
|
||||
information in the bit stream. No out-of-band notification is
|
||||
required for the decoder to process changes in the bit rate sent
|
||||
by the encoder.
|
||||
</t>
|
||||
|
||||
<t>
|
||||
It is RECOMMENDED that values of 8000, 16000 and 32000 be used
|
||||
for normal internet telephony applications, though the sample
|
||||
rate is supported at rates as low as 6000 Hz and as high as
|
||||
48 kHz.
|
||||
</t>
|
||||
|
||||
<t>
|
||||
The RTP payload MUST be padded to provide an integer number of
|
||||
octets as the payload length. These padding bits are LSB aligned
|
||||
in network octet order and consist of a 0 followed by all ones
|
||||
(until the end of the octet). This padding is only required for
|
||||
the last frame in the packet, and only to ensure the packet
|
||||
contents ends on an octet boundary.
|
||||
</t>
|
||||
|
||||
</section>
|
||||
|
||||
<section anchor="Example Speex packet" title="Example Speex packet">
|
||||
|
||||
<t>
|
||||
In the example below we have a single Speex frame with 5 bits
|
||||
of padding to ensure the packet size falls on an octet boundary.
|
||||
</t>
|
||||
|
||||
<artwork><![CDATA[
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|V=2|P|X| CC |M| PT | sequence number |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| timestamp |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| synchronization source (SSRC) identifier |
|
||||
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
| contributing source (CSRC) identifiers |
|
||||
| ... |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| ..speex data.. |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| ..speex data.. |0 1 1 1 1|
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
]]></artwork>
|
||||
|
||||
</section>
|
||||
|
||||
<section anchor="Multiple Speex frames in a RTP packet" title="Multiple Speex frames in a RTP packet">
|
||||
|
||||
<t>
|
||||
Below is an example of two Speex frames contained within one RTP
|
||||
packet. The Speex frame length in this example fall on an octet
|
||||
boundary so there is no padding.
|
||||
</t>
|
||||
|
||||
<t>
|
||||
Speex codecs <xref target="speexenc"></xref> are able to detect the the bitrate from the
|
||||
payload and are responsible for detecting the 20 msec boundaries
|
||||
between each frame.
|
||||
</t>
|
||||
|
||||
<artwork><![CDATA[
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|V=2|P|X| CC |M| PT | sequence number |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| timestamp |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| synchronization source (SSRC) identifier |
|
||||
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
| contributing source (CSRC) identifiers |
|
||||
| ... |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| ..speex data.. |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| ..speex data.. | ..speex data.. |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| ..speex data.. |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
]]></artwork>
|
||||
|
||||
</section>
|
||||
|
||||
<section anchor="MIME registration of Speex" title="MIME registration of Speex">
|
||||
|
||||
<t>
|
||||
Full definition of the MIME <xref target="rfc2045"></xref> type for Speex will be part of the Ogg
|
||||
Vorbis MIME type definition application <xref target="rfc3534"></xref>.
|
||||
</t>
|
||||
|
||||
<t>MIME media type name: audio</t>
|
||||
|
||||
<t>MIME subtype: speex</t>
|
||||
|
||||
<t>Optional parameters:</t>
|
||||
|
||||
<t>Required parameters: to be included in the Ogg MIME specification.</t>
|
||||
|
||||
<t>Encoding considerations:</t>
|
||||
|
||||
<t>Security Considerations:</t>
|
||||
<t>See Section 6 of RFC 3047.</t>
|
||||
|
||||
<t>Interoperability considerations: none</t>
|
||||
|
||||
<t>Published specification: </t>
|
||||
|
||||
<t>Applications which use this media type:</t>
|
||||
|
||||
<t>Additional information: none</t>
|
||||
|
||||
<t>Person & email address to contact for further information:<vspace blankLines="1" />
|
||||
<list style="empty">
|
||||
<t>Greg Herlein <gherlein@herlein.com></t>
|
||||
<t>Jean-Marc Valin <jean-marc.valin@hermes.usherb.ca></t>
|
||||
</list>
|
||||
</t>
|
||||
|
||||
<t>Intended usage: COMMON</t>
|
||||
|
||||
<t>Author/Change controller:</t>
|
||||
|
||||
<t>
|
||||
<list style="empty">
|
||||
<t>Author: Greg Herlein <gherlein@herlein.com></t>
|
||||
<t>Change controller: Greg Herlein <gherlein@herlein.com></t>
|
||||
<t>Change controller: IETF AVT Working Group</t>
|
||||
</list>
|
||||
</t>
|
||||
|
||||
<t>
|
||||
This transport type signifies that the content is to be interpreted
|
||||
according to this document if the contents are transmitted over RTP.
|
||||
Should this transport type appear over a lossless streaming protocol
|
||||
such as TCP, the content encapsulation should be interpreted as an
|
||||
Ogg Stream in accordance with <xref target="rfc3534"></xref>, with the exception that the
|
||||
content of the Ogg Stream may be assumed to be Speex audio and
|
||||
Speex audio only.
|
||||
</t>
|
||||
|
||||
</section>
|
||||
|
||||
<section anchor="SDP usage of Speex" title="SDP usage of Speex">
|
||||
|
||||
<t>
|
||||
When conveying information by SDP <xref target="rfc2327"></xref>, the encoding name MUST be
|
||||
set to "speex". An example of the media representation in SDP for
|
||||
offering a single channel of Speex at 8000 samples per second might
|
||||
be:
|
||||
</t>
|
||||
|
||||
<vspace blankLines="1" />
|
||||
<list style="empty">
|
||||
<t>m=audio 8088 RTP/AVP 97</t>
|
||||
<t>a=rtpmap:97 speex/8000</t>
|
||||
</list>
|
||||
|
||||
<t>
|
||||
Note that the RTP payload type code of 97 is defined in this media
|
||||
definition to be 'mapped' to the speex codec at an 8kHz sampling
|
||||
frequency using the 'a=rtpmap' line. Any number from 96 to 127
|
||||
could have been chosen (the allowed range for dynamic types).
|
||||
</t>
|
||||
|
||||
<t>
|
||||
The value of the sampling frequency is typically 8000 for narrow band
|
||||
operation, 16000 for wide band operation, and 32000 for ultra-wide
|
||||
band operation.
|
||||
</t>
|
||||
|
||||
<t>
|
||||
If for some reason the offerer has bandwidth limitations, the client
|
||||
may use the "b=" header, as explained in SDP <xref target="rfc2327"></xref>. The following example
|
||||
illustrates the case where the offerer cannot receive more than
|
||||
10 kbit/s.
|
||||
</t>
|
||||
|
||||
<vspace blankLines="1" />
|
||||
<list style="empty">
|
||||
<t>m=audio 8088 RTP/AVP 97</t>
|
||||
<t>b=AS:10</t>
|
||||
<t>a=rtmap:97 speex/8000</t>
|
||||
</list>
|
||||
|
||||
<t>
|
||||
In this case, if the remote part agrees, it should configure its
|
||||
Speex encoder so that it does not use modes that produce more than
|
||||
10 kbit/s. Note that the "b=" constraint also applies on all
|
||||
payload types that may be proposed in the media line ("m=").
|
||||
</t>
|
||||
|
||||
<t>
|
||||
An other way to make recommendations to the remote Speex encoder
|
||||
is to use its specific parameters via the a=fmtp: directive. The
|
||||
following parameters are defined for use in this way:
|
||||
</t>
|
||||
|
||||
<vspace blankLines="1" />
|
||||
<list style="empty">
|
||||
<t>ptime: duration of each packet in milliseconds.<vspace blankLines="1" /></t>
|
||||
|
||||
<t>sr: actual sample rate in Hz.<vspace blankLines="1" /></t>
|
||||
|
||||
<t>ebw: encoding bandwidth - either 'narrow' or 'wide' or
|
||||
'ultra' (corresponds to nominal 8000, 16000, and
|
||||
32000 Hz sampling rates).<vspace blankLines="1" /></t>
|
||||
|
||||
<t>vbr: variable bit rate - either 'on' 'off' or 'vad'
|
||||
(defaults to off). If on, variable bit rate is
|
||||
enabled. If off, disabled. If set to 'vad' then
|
||||
constant bit rate is used but silence will be encoded
|
||||
with special short frames to indicate a lack of voice
|
||||
for that period.<vspace blankLines="1" /></t>
|
||||
|
||||
<t>cng: comfort noise generation - either 'on' or 'off'. If
|
||||
off then silence frames will be silent; if 'on' then
|
||||
those frames will be filled with comfort noise.<vspace blankLines="1" /></t>
|
||||
|
||||
<t>mode: Speex encoding mode. Can be {1,2,3,4,5,6,any}
|
||||
defaults to 3 in narrowband, 6 in wide and ultra-wide.<vspace blankLines="1" /></t>
|
||||
|
||||
<t>penh: use of perceptual enhancement. 1 indicates
|
||||
to the decoder that perceptual enhancement is recommended,
|
||||
0 indicates that it is not. Defaults to on (1).<vspace blankLines="1" /></t>
|
||||
</list>
|
||||
|
||||
<t>Examples:</t>
|
||||
|
||||
<vspace blankLines="1" />
|
||||
<list style="empty">
|
||||
<t>m=audio 8008 RTP/AVP 97</t>
|
||||
<t>a=rtpmap:97 speex/8000</t>
|
||||
<t>a=fmtp:97 mode=4</t>
|
||||
</list>
|
||||
|
||||
<t>
|
||||
This examples illustrate an offerer that wishes to receive
|
||||
a Speex stream at 8000Hz, but only using speex mode 3.
|
||||
</t>
|
||||
|
||||
<t>
|
||||
The offerer may suggest to the remote decoder to activate
|
||||
its perceptual enhancement filter like this:
|
||||
</t>
|
||||
|
||||
<vspace blankLines="1" />
|
||||
<list style="empty">
|
||||
<t>m=audio 8088 RTP/AVP 97</t>
|
||||
<t>a=rtmap:97 speex/8000</t>
|
||||
<t>a=fmtp:97 penh=1 </t>
|
||||
</list>
|
||||
|
||||
<t>
|
||||
Several Speex specific parameters can be given in a single
|
||||
a=fmtp line provided that they are separated by a semi-colon:
|
||||
</t>
|
||||
|
||||
<vspace blankLines="1" />
|
||||
<list style="empty">
|
||||
<t>a=fmtp:97 mode=any;penh=1</t>
|
||||
</list>
|
||||
|
||||
<t>
|
||||
The offerer may indicate that it wishes to send variable bit rate
|
||||
frames with comfort noise:
|
||||
</t>
|
||||
|
||||
<vspace blankLines="1" />
|
||||
<list style="empty">
|
||||
<t>m=audio 8088 RTP/AVP 97</t>
|
||||
<t>a=rtmap:97 speex/8000</t>
|
||||
<t>a=fmtp:97 vbr=on;cng=on</t>
|
||||
</list>
|
||||
|
||||
<t>
|
||||
The "ptime" attribute is used to denote the packetization
|
||||
interval (ie, how many milliseconds of audio is encoded in a
|
||||
single RTP packet). Since Speex uses 20 msec frames, ptime values
|
||||
of multiples of 20 denote multiple Speex frames per packet.
|
||||
Values of ptime which are not multiples of 20 MUST be ignored
|
||||
and clients MUST use the default value of 20 instead.
|
||||
</t>
|
||||
|
||||
<t>
|
||||
In the example below the ptime value is set to 40, indicating that
|
||||
there are 2 frames in each packet.
|
||||
</t>
|
||||
|
||||
<vspace blankLines="1" />
|
||||
<list style="empty">
|
||||
<t>m=audio 8008 RTP/AVP 97</t>
|
||||
<t>a=rtpmap:97 speex/8000</t>
|
||||
<t>a=ptime:40</t>
|
||||
</list>
|
||||
|
||||
<t>
|
||||
Note that the ptime parameter applies to all payloads listed
|
||||
in the media line and is not used as part of an a=fmtp directive.
|
||||
</t>
|
||||
|
||||
<t>
|
||||
Values of ptime not multiple of 20 msec are meaningless, so the
|
||||
receiver of such ptime values MUST ignore them. If during the
|
||||
life of an RTP session the ptime value changes, when there are
|
||||
multiple Speex frames for example, the SDP value must also reflect
|
||||
the new value.
|
||||
</t>
|
||||
|
||||
<t>
|
||||
Care must be taken when setting the value of ptime so that the
|
||||
RTP packet size does not exceed the path MTU.
|
||||
</t>
|
||||
|
||||
</section>
|
||||
<section anchor="ITU H.323/H.245 Use of Speex" title="ITU H.323/H.245 Use of Speex">
|
||||
|
||||
<t>
|
||||
Application is underway to make Speex a standard ITU codec.
|
||||
However, until that is finalized, Speex MAY be used in H.323 <xref target="H323"></xref> by
|
||||
using a non-standard codec block definition in the H.245 <xref target="H245"></xref> codec
|
||||
capability negotiations.
|
||||
</t>
|
||||
|
||||
</section>
|
||||
|
||||
<section anchor="NonStandardMessage format" title="NonStandardMessage format">
|
||||
|
||||
<t>
|
||||
For Speex use in H.245 <xref target="H245"></xref> based systems, the fields in the
|
||||
NonStandardMessage should be:
|
||||
</t>
|
||||
|
||||
<vspace blankLines="1" />
|
||||
<list style="empty">
|
||||
<t>t35CountryCode = Hex: B5</t>
|
||||
<t>t35Extension = Hex: 00</t>
|
||||
<t>manufacturerCode = Hex: 0026</t>
|
||||
<t>[Length of the Binary Sequence (8 bit number)]</t>
|
||||
<t>[Binary Sequence consisting of an ASCII string, no NULL terminator]</t>
|
||||
</list>
|
||||
|
||||
<t>
|
||||
The binary sequence is an ascii string merely for ease of use.
|
||||
The string is not null terminated. The format of this string is
|
||||
</t>
|
||||
|
||||
<vspace blankLines="1" />
|
||||
<list style="empty">
|
||||
<t>speex [optional variables]</t>
|
||||
</list>
|
||||
|
||||
<t>
|
||||
The optional variables are identical to those used for the SDP
|
||||
a=fmtp strings discussed in section 5 above. The string is built
|
||||
to be all on one line, each key-value pair separated by a
|
||||
semi-colon. The optional variables MAY be omitted, which causes
|
||||
the default values to be assumed. They are:
|
||||
</t>
|
||||
|
||||
<vspace blankLines="1" />
|
||||
<list style="empty">
|
||||
<t>ebw=narrow;mode=3;vbr=off;cng=off;ptime=20;sr=8000;penh=no;</t>
|
||||
</list>
|
||||
|
||||
<t>
|
||||
The fifth octet of the block is the length of the binary sequence.
|
||||
</t>
|
||||
|
||||
<t>
|
||||
NOTE: this method can result in the advertising of a large number
|
||||
of Speex 'codecs' based on the number of variables possible. For
|
||||
most VoIP applications, use of the default binary sequence of
|
||||
'speex' is RECOMMENDED to be used in addition to all other options.
|
||||
This maximizes the chances that two H.323 based applications that
|
||||
support Speex can find a mutual codec.
|
||||
</t>
|
||||
|
||||
</section>
|
||||
|
||||
<section anchor="RTP Payload Types" title="RTP Payload Types">
|
||||
|
||||
<t>
|
||||
Dynamic payload type codes MUST be negotiated 'out-of-band'
|
||||
for the assignment of a dynamic payload type from the
|
||||
range of 96-127. H.323 applications MUST use the H.245
|
||||
H2250LogicalChannelParameters encoding to accomplish this.
|
||||
</t>
|
||||
|
||||
</section>
|
||||
|
||||
<section anchor="Security Considerations" title="Security Considerations">
|
||||
|
||||
<t>
|
||||
RTP packets using the payload format defined in this specification
|
||||
are subject to the security considerations discussed in the RTP
|
||||
specification <xref target="rfc3550"></xref>, and any appropriate RTP profile. This implies
|
||||
that confidentiality of the media streams is achieved by encryption.
|
||||
Because the data compression used with this payload format is applied
|
||||
end-to-end, encryption may be performed after compression so there is
|
||||
no conflict between the two operations.
|
||||
</t>
|
||||
|
||||
<t>
|
||||
A potential denial-of-service threat exists for data encodings using
|
||||
compression techniques that have non-uniform receiver-end
|
||||
computational load. The attacker can inject pathological datagrams
|
||||
into the stream which are complex to decode and cause the receiver to
|
||||
be overloaded. However, this encoding does not exhibit any
|
||||
significant non-uniformity.
|
||||
</t>
|
||||
|
||||
<t>
|
||||
As with any IP-based protocol, in some circumstances a receiver may
|
||||
be overloaded simply by the receipt of too many packets, either
|
||||
desired or undesired. Network-layer authentication may be used to
|
||||
discard packets from undesired sources, but the processing cost of
|
||||
the authentication itself may be too high.
|
||||
</t>
|
||||
|
||||
</section>
|
||||
|
||||
<section anchor="Acknowledgments" title="Acknowledgments">
|
||||
|
||||
<t>
|
||||
The authors would like to thank Equivalence Pty Ltd of Australia
|
||||
for their assistance in attempting to standardize the use of Speex
|
||||
in H.323 applications, and for implementing Speex in their open
|
||||
source OpenH323 stack. The authors would also like to thank Brian
|
||||
C. Wiles <brian@streamcomm.com> of StreamComm for his assistance in
|
||||
developing the proposed standard for Speex use in H.323
|
||||
applications.
|
||||
</t>
|
||||
|
||||
<t>
|
||||
The authors would also like to thank the following members of the
|
||||
Speex and AVT communities for their input: Ross Finlayson,
|
||||
Federico Montesino Pouzols, Henning Schulzrinne, Magnus Westerlund.
|
||||
</t>
|
||||
</section>
|
||||
|
||||
</middle>
|
||||
|
||||
<back>
|
||||
|
||||
<references title="Normative References">
|
||||
|
||||
<reference anchor="rfc2119">
|
||||
<front>
|
||||
<title>Key words for use in RFCs to Indicate Requirement Levels </title>
|
||||
<author initials="S." surname="Bradner" fullname="Scott Bradner"></author>
|
||||
</front>
|
||||
<seriesInfo name="RFC" value="2119" />
|
||||
</reference>
|
||||
|
||||
<reference anchor="rfc3550">
|
||||
<front>
|
||||
<title>RTP: A Transport Protocol for real-time applications</title>
|
||||
<author initials="H." surname="Schulzrinne" fullname=""></author>
|
||||
<author initials="S." surname="Casner" fullname=""></author>
|
||||
<author initials="R." surname="Frederick" fullname=""></author>
|
||||
<author initials="V." surname="Jacobson" fullname=""></author>
|
||||
</front>
|
||||
<seriesInfo name="RFC" value="3550" />
|
||||
</reference>
|
||||
|
||||
<reference anchor="rfc2045">
|
||||
<front>
|
||||
<title>Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies</title>
|
||||
<author initials="" surname="" fullname=""></author>
|
||||
</front>
|
||||
<date month="November" year="1998" />
|
||||
<seriesInfo name="RFC" value="2045" />
|
||||
</reference>
|
||||
|
||||
<reference anchor="rfc2327">
|
||||
<front>
|
||||
<title>SDP: Session Description Protocol</title>
|
||||
<author initials="V." surname="Jacobson" fullname=""></author>
|
||||
<author initials="M." surname="Handley" fullname=""></author>
|
||||
</front>
|
||||
<date month="April" year="1998" />
|
||||
<seriesInfo name="RFC" value="2327" />
|
||||
</reference>
|
||||
|
||||
<reference anchor="H323">
|
||||
<front>
|
||||
<title>Packet-based Multimedia Communications Systems</title>
|
||||
<author initials="" surname="" fullname=""></author>
|
||||
</front>
|
||||
<date month="" year="1998" />
|
||||
<seriesInfo name="ITU-T Recommendation" value="H.323" />
|
||||
</reference>
|
||||
|
||||
<reference anchor="H245">
|
||||
<front>
|
||||
<title>Control of communications between Visual Telephone Systems and Terminal Equipment</title>
|
||||
<author initials="" surname="" fullname=""></author>
|
||||
</front>
|
||||
<date month="" year="1998" />
|
||||
<seriesInfo name="ITU-T Recommendation" value="H.245" />
|
||||
</reference>
|
||||
|
||||
<reference anchor="rfc3551">
|
||||
<front>
|
||||
<title>RTP Profile for Audio and Video Conferences with Minimal Control.</title>
|
||||
<author initials="H." surname="Schulzrinne" fullname=""></author>
|
||||
<author initials="S." surname="Casner" fullname=""></author>
|
||||
</front>
|
||||
<date month="July" year="2003" />
|
||||
<seriesInfo name="RFC" value="3551" />
|
||||
</reference>
|
||||
|
||||
<reference anchor="rfc3534">
|
||||
<front>
|
||||
<title>The application/ogg Media Type</title>
|
||||
<author initials="L." surname="Walleij" fullname=""></author>
|
||||
</front>
|
||||
<date month="May" year="2003" />
|
||||
<seriesInfo name="RFC" value="3534" />
|
||||
</reference>
|
||||
|
||||
</references>
|
||||
|
||||
<references title="Informative References">
|
||||
|
||||
<reference anchor="speexenc">
|
||||
<front>
|
||||
<title>Speexenc/speexdec, reference command-line encoder/decoder</title>
|
||||
</front>
|
||||
<seriesInfo name="Speex website" value="http://www.speex.org/" />
|
||||
</reference>
|
||||
|
||||
<reference anchor="CELP">
|
||||
<front>
|
||||
<title>CELP, U.S. Federal Standard 1016.</title>
|
||||
<author initials="" surname="" fullname=""></author>
|
||||
</front>
|
||||
<seriesInfo name="National Technical Information Service (NTIS) website" value="http://www.ntis.gov/" />
|
||||
</reference>
|
||||
|
||||
</references>
|
||||
|
||||
</back>
|
||||
</rfc>
|
||||
784
Engine/lib/speex/doc/draft-ietf-avt-rtp-speex-00.txt
Normal file
784
Engine/lib/speex/doc/draft-ietf-avt-rtp-speex-00.txt
Normal file
|
|
@ -0,0 +1,784 @@
|
|||
|
||||
|
||||
|
||||
AVT Working Group G. Herlein
|
||||
Internet-Draft S. Morlat
|
||||
Expires: April 15, 2006 J. Jean-Marc
|
||||
R. Hardiman
|
||||
P. Kerr
|
||||
October 12, 2005
|
||||
|
||||
|
||||
draft-ietf-avt-rtp-speex-00
|
||||
RTP Payload Format for the Speex Codec
|
||||
|
||||
Status of this Memo
|
||||
|
||||
By submitting this Internet-Draft, each author represents that any
|
||||
applicable patent or other IPR claims of which he or she is aware
|
||||
have been or will be disclosed, and any of which he or she becomes
|
||||
aware will be disclosed, in accordance with Section 6 of BCP 79.
|
||||
|
||||
Internet-Drafts are working documents of the Internet Engineering
|
||||
Task Force (IETF), its areas, and its working groups. Note that
|
||||
other groups may also distribute working documents as Internet-
|
||||
Drafts.
|
||||
|
||||
Internet-Drafts are draft documents valid for a maximum of six months
|
||||
and may be updated, replaced, or obsoleted by other documents at any
|
||||
time. It is inappropriate to use Internet-Drafts as reference
|
||||
material or to cite them other than as "work in progress."
|
||||
|
||||
The list of current Internet-Drafts can be accessed at
|
||||
http://www.ietf.org/ietf/1id-abstracts.txt.
|
||||
|
||||
The list of Internet-Draft Shadow Directories can be accessed at
|
||||
http://www.ietf.org/shadow.html.
|
||||
|
||||
This Internet-Draft will expire on April 15, 2006.
|
||||
|
||||
Copyright Notice
|
||||
|
||||
Copyright (C) The Internet Society (2005).
|
||||
|
||||
Abstract
|
||||
|
||||
Speex is an open-source voice codec suitable for use in Voice over IP
|
||||
(VoIP) type applications. This document describes the payload format
|
||||
for Speex generated bit streams within an RTP packet. Also included
|
||||
here are the necessary details for the use of Speex with the Session
|
||||
Description Protocol (SDP).
|
||||
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires April 15, 2006 [Page 1]
|
||||
|
||||
Internet-Draft draft-ietf-avt-rtp-speex-00 October 2005
|
||||
|
||||
|
||||
Editors Note
|
||||
|
||||
All references to RFC XXXX are to be replaced by references to the
|
||||
RFC number of this memo, when published.
|
||||
|
||||
Table of Contents
|
||||
|
||||
1. Conventions used in this document . . . . . . . . . . . . . 3
|
||||
2. Overview of the Speex Codec . . . . . . . . . . . . . . . . 3
|
||||
3. RTP payload format for Speex . . . . . . . . . . . . . . . . 3
|
||||
4. RTP Header . . . . . . . . . . . . . . . . . . . . . . . . . 3
|
||||
5. Speex payload . . . . . . . . . . . . . . . . . . . . . . . 5
|
||||
6. Example Speex packet . . . . . . . . . . . . . . . . . . . . 6
|
||||
7. Multiple Speex frames in a RTP packet . . . . . . . . . . . 6
|
||||
8. MIME registration of Speex . . . . . . . . . . . . . . . . . 7
|
||||
9. SDP usage of Speex . . . . . . . . . . . . . . . . . . . . . 8
|
||||
10. ITU H.323 Use of Speex . . . . . . . . . . . . . . . . . . . 10
|
||||
11. Security Considerations . . . . . . . . . . . . . . . . . . 10
|
||||
12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 11
|
||||
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 11
|
||||
13.1 Normative References . . . . . . . . . . . . . . . . . . 11
|
||||
13.2 Informative References . . . . . . . . . . . . . . . . . 12
|
||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 12
|
||||
Intellectual Property and Copyright Statements . . . . . . . 14
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires April 15, 2006 [Page 2]
|
||||
|
||||
Internet-Draft draft-ietf-avt-rtp-speex-00 October 2005
|
||||
|
||||
|
||||
1. Conventions used in this document
|
||||
|
||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
|
||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
|
||||
document are to be interpreted as described in RFC 2119 [1].
|
||||
|
||||
2. Overview of the Speex Codec
|
||||
|
||||
Speex is based on the CELP [8] encoding technique with support for
|
||||
either narrowband (nominal 8kHz), wideband (nominal 16kHz) or ultra-
|
||||
wideband (nominal 32kHz), and (non-optimal) rates up to 48 kHz
|
||||
sampling also available. The main characteristics can be summarized
|
||||
as follows:
|
||||
|
||||
o Free software/open-source
|
||||
o Integration of wideband and narrowband in the same bit-stream
|
||||
o Wide range of bit-rates available
|
||||
o Dynamic bit-rate switching and variable bit-rate (VBR)
|
||||
o Voice Activity Detection (VAD, integrated with VBR)
|
||||
o Variable complexity
|
||||
|
||||
3. RTP payload format for Speex
|
||||
|
||||
For RTP based transportation of Speex encoded audio the standard RTP
|
||||
header [2] is followed by one or more payload data blocks. An
|
||||
optional padding terminator may also be used.
|
||||
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| RTP Header |
|
||||
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
| one or more frames of Speex .... |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| one or more frames of Speex .... | padding |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|
||||
|
||||
4. RTP Header
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires April 15, 2006 [Page 3]
|
||||
|
||||
Internet-Draft draft-ietf-avt-rtp-speex-00 October 2005
|
||||
|
||||
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|V=2|P|X| CC |M| PT | sequence number |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| timestamp |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| synchronization source (SSRC) identifier |
|
||||
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
| contributing source (CSRC) identifiers |
|
||||
| ... |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|
||||
The RTP header begins with an octet of fields (V, P, X, and CC) to
|
||||
support specialized RTP uses (see [2] and [5] for details). For
|
||||
Speex the following values are used.
|
||||
|
||||
Version (V): 2 bits
|
||||
|
||||
This field identifies the version of RTP. The version used by this
|
||||
specification is two [2].
|
||||
|
||||
Padding (P): 1 bit
|
||||
|
||||
If the padding bit is set, the packet contains one or more additional
|
||||
padding octets at the end which are not part of the payload.
|
||||
|
||||
Extension (X): 1 bit
|
||||
|
||||
If the extension, X, bit is set, the fixed header MUST be followed by
|
||||
exactly one header extension, with a format defined in Section 5.3.1.
|
||||
of [2].
|
||||
|
||||
CSRC count (CC): 4 bits
|
||||
|
||||
The CSRC count contains the number of CSRC identifiers.
|
||||
|
||||
Marker (M): 1 bit
|
||||
|
||||
The M bit indicates if the packet contains comfort noise. This field
|
||||
is used in conjunction with the cng SDP attribute and conforms to
|
||||
Section 4.1. of [5].
|
||||
|
||||
Payload Type (PT): 7 bits
|
||||
|
||||
An RTP profile for a class of applications is expected to assign a
|
||||
payload type for this format, or a dynamically allocated payload type
|
||||
SHOULD be chosen which designates the payload as Speex.
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires April 15, 2006 [Page 4]
|
||||
|
||||
Internet-Draft draft-ietf-avt-rtp-speex-00 October 2005
|
||||
|
||||
|
||||
Sequence number: 16 bits
|
||||
|
||||
The sequence number increments by one for each RTP data packet sent,
|
||||
and may be used by the receiver to detect packet loss and to restore
|
||||
packet sequence. This field is detailed further in [2].
|
||||
|
||||
Timestamp: 32 bits
|
||||
|
||||
A timestamp representing the sampling time of the first sample of the
|
||||
first Speex packet in the RTP packet. The clock frequency MUST be
|
||||
set to the sample rate of the encoded audio data. Speex uses 20 msec
|
||||
frames and a variable sampling rate clock. The RTP timestamp MUST be
|
||||
in units of 1/X of a second where X is the sample rate used. Speex
|
||||
uses a nominal 8kHz sampling rate for narrowband use, a nominal 16kHz
|
||||
sampling rate for wideband use, and a nominal 32kHz sampling rate for
|
||||
ultra-wideband use.
|
||||
|
||||
SSRC/CSRC identifiers:
|
||||
|
||||
These two fields, 32 bits each with one SSRC field and a maximum of
|
||||
16 CSRC fields, are as defined in [2].
|
||||
|
||||
5. Speex payload
|
||||
|
||||
For the purposes of packetizing the bit stream in RTP, it is only
|
||||
necessary to consider the sequence of bits as output by the Speex
|
||||
encoder [7], and present the same sequence to the decoder. The
|
||||
payload format described here maintains this sequence.
|
||||
|
||||
A typical Speex frame, encoded at the maximum bitrate, is approx. 110
|
||||
octets and the total number of Speex frames SHOULD be kept less than
|
||||
the path MTU to prevent fragmentation. Speex frames MUST NOT be
|
||||
fragmented across multiple RTP packets,
|
||||
|
||||
An RTP packet MAY contain Speex frames of the same bit rate or of
|
||||
varying bit rates, since the bit-rate for a frame is conveyed in band
|
||||
with the signal.
|
||||
|
||||
The encoding and decoding algorithm can change the bit rate at any 20
|
||||
msec frame boundary, with the bit rate change notification provided
|
||||
in-band with the bit stream. Each frame contains both "mode"
|
||||
(narrowband, wideband or ultra-wideband) and "sub-mode" (bit-rate)
|
||||
information in the bit stream. No out-of-band notification is
|
||||
required for the decoder to process changes in the bit rate sent by
|
||||
the encoder.
|
||||
|
||||
It is RECOMMENDED that values of 8000, 16000 and 32000 be used for
|
||||
normal internet telephony applications, though the sample rate is
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires April 15, 2006 [Page 5]
|
||||
|
||||
Internet-Draft draft-ietf-avt-rtp-speex-00 October 2005
|
||||
|
||||
|
||||
supported at rates as low as 6000 Hz and as high as 48 kHz.
|
||||
|
||||
The RTP payload MUST be padded to provide an integer number of octets
|
||||
as the payload length. These padding bits are LSB aligned in network
|
||||
octet order and consist of a 0 followed by all ones (until the end of
|
||||
the octet). This padding is only required for the last frame in the
|
||||
packet, and only to ensure the packet contents ends on an octet
|
||||
boundary.
|
||||
|
||||
6. Example Speex packet
|
||||
|
||||
In the example below we have a single Speex frame with 5 bits of
|
||||
padding to ensure the packet size falls on an octet boundary.
|
||||
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|V=2|P|X| CC |M| PT | sequence number |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| timestamp |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| synchronization source (SSRC) identifier |
|
||||
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
| contributing source (CSRC) identifiers |
|
||||
| ... |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| ..speex data.. |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| ..speex data.. |0 1 1 1 1|
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|
||||
|
||||
7. Multiple Speex frames in a RTP packet
|
||||
|
||||
Below is an example of two Speex frames contained within one RTP
|
||||
packet. The Speex frame length in this example fall on an octet
|
||||
boundary so there is no padding.
|
||||
|
||||
Speex codecs [7] are able to detect the bitrate from the payload and
|
||||
are responsible for detecting the 20 msec boundaries between each
|
||||
frame.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires April 15, 2006 [Page 6]
|
||||
|
||||
Internet-Draft draft-ietf-avt-rtp-speex-00 October 2005
|
||||
|
||||
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|V=2|P|X| CC |M| PT | sequence number |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| timestamp |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| synchronization source (SSRC) identifier |
|
||||
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
| contributing source (CSRC) identifiers |
|
||||
| ... |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| ..speex data.. |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| ..speex data.. | ..speex data.. |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| ..speex data.. |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|
||||
|
||||
8. MIME registration of Speex
|
||||
|
||||
Full definition of the MIME [3] type for Speex will be part of the
|
||||
Ogg Vorbis MIME type definition application [6].
|
||||
|
||||
MIME media type name: audio
|
||||
|
||||
MIME subtype: speex
|
||||
|
||||
Optional parameters:
|
||||
|
||||
Required parameters: to be included in the Ogg MIME specification.
|
||||
|
||||
Encoding considerations:
|
||||
|
||||
This type is only defined for transfer via HTTP as specified in RFC
|
||||
XXXX.
|
||||
|
||||
Security Considerations:
|
||||
|
||||
See Section 6 of RFC 3047.
|
||||
|
||||
Interoperability considerations: none
|
||||
|
||||
Published specification:
|
||||
|
||||
Applications which use this media type:
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires April 15, 2006 [Page 7]
|
||||
|
||||
Internet-Draft draft-ietf-avt-rtp-speex-00 October 2005
|
||||
|
||||
|
||||
Additional information: none
|
||||
|
||||
Person & email address to contact for further information:
|
||||
|
||||
Greg Herlein <gherlein@herlein.com>
|
||||
Jean-Marc Valin <jean-marc.valin@usherbrooke.ca>
|
||||
|
||||
Intended usage: COMMON
|
||||
|
||||
Author/Change controller:
|
||||
|
||||
Author: Greg Herlein <gherlein@herlein.com>
|
||||
Change controller: Greg Herlein <gherlein@herlein.com>
|
||||
Change controller: IETF AVT Working Group
|
||||
|
||||
This transport type signifies that the content is to be interpreted
|
||||
according to this document if the contents are transmitted over RTP.
|
||||
Should this transport type appear over a lossless streaming protocol
|
||||
such as TCP, the content encapsulation should be interpreted as an
|
||||
Ogg Stream in accordance with [6], with the exception that the
|
||||
content of the Ogg Stream may be assumed to be Speex audio and Speex
|
||||
audio only.
|
||||
|
||||
9. SDP usage of Speex
|
||||
|
||||
When conveying information by SDP [4], the encoding name MUST be set
|
||||
to "speex". An example of the media representation in SDP for
|
||||
offering a single channel of Speex at 8000 samples per second might
|
||||
be:
|
||||
|
||||
m=audio 8088 RTP/AVP 97
|
||||
a=rtpmap:97 speex/8000
|
||||
|
||||
Note that the RTP payload type code of 97 is defined in this media
|
||||
definition to be 'mapped' to the speex codec at an 8kHz sampling
|
||||
frequency using the 'a=rtpmap' line. Any number from 96 to 127 could
|
||||
have been chosen (the allowed range for dynamic types).
|
||||
|
||||
The value of the sampling frequency is typically 8000 for narrow band
|
||||
operation, 16000 for wide band operation, and 32000 for ultra-wide
|
||||
band operation.
|
||||
|
||||
If for some reason the offerer has bandwidth limitations, the client
|
||||
may use the "b=" header, as explained in SDP [4]. The following
|
||||
example illustrates the case where the offerer cannot receive more
|
||||
than 10 kbit/s.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires April 15, 2006 [Page 8]
|
||||
|
||||
Internet-Draft draft-ietf-avt-rtp-speex-00 October 2005
|
||||
|
||||
|
||||
m=audio 8088 RTP/AVP 97
|
||||
b=AS:10
|
||||
a=rtmap:97 speex/8000
|
||||
|
||||
In this case, if the remote part agrees, it should configure its
|
||||
Speex encoder so that it does not use modes that produce more than 10
|
||||
kbit/s. Note that the "b=" constraint also applies on all payload
|
||||
types that may be proposed in the media line ("m=").
|
||||
|
||||
An other way to make recommendations to the remote Speex encoder is
|
||||
to use its specific parameters via the a=fmtp: directive. The
|
||||
following parameters are defined for use in this way:
|
||||
|
||||
ptime: duration of each packet in milliseconds.
|
||||
|
||||
sr: actual sample rate in Hz.
|
||||
|
||||
ebw: encoding bandwidth - either 'narrow' or 'wide' or 'ultra'
|
||||
(corresponds to nominal 8000, 16000, and 32000 Hz sampling rates).
|
||||
|
||||
vbr: variable bit rate - either 'on' 'off' or 'vad' (defaults
|
||||
to off). If on, variable bit rate is enabled. If off, disabled.
|
||||
If set to 'vad' then constant bit rate is used but silence will be
|
||||
encoded with special short frames to indicate a lack of voice for
|
||||
that period.
|
||||
|
||||
cng: comfort noise generation - either 'on' or 'off'. If off
|
||||
then silence frames will be silent; if 'on' then those frames will
|
||||
be filled with comfort noise.
|
||||
|
||||
mode: Speex encoding mode. Can be {1,2,3,4,5,6,any} defaults to
|
||||
3 in narrowband, 6 in wide and ultra-wide.
|
||||
|
||||
|
||||
Examples:
|
||||
|
||||
m=audio 8008 RTP/AVP 97
|
||||
a=rtpmap:97 speex/8000
|
||||
a=fmtp:97 mode=4
|
||||
|
||||
This examples illustrate an offerer that wishes to receive a Speex
|
||||
stream at 8000Hz, but only using speex mode 4.
|
||||
|
||||
Several Speex specific parameters can be given in a single a=fmtp
|
||||
line provided that they are separated by a semi-colon:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires April 15, 2006 [Page 9]
|
||||
|
||||
Internet-Draft draft-ietf-avt-rtp-speex-00 October 2005
|
||||
|
||||
|
||||
a=fmtp:97 mode=any;mode=1
|
||||
|
||||
The offerer may indicate that it wishes to send variable bit rate
|
||||
frames with comfort noise:
|
||||
|
||||
m=audio 8088 RTP/AVP 97
|
||||
a=rtmap:97 speex/8000
|
||||
a=fmtp:97 vbr=on;cng=on
|
||||
|
||||
The "ptime" attribute is used to denote the packetization interval
|
||||
(ie, how many milliseconds of audio is encoded in a single RTP
|
||||
packet). Since Speex uses 20 msec frames, ptime values of multiples
|
||||
of 20 denote multiple Speex frames per packet. Values of ptime which
|
||||
are not multiples of 20 MUST be ignored and clients MUST use the
|
||||
default value of 20 instead.
|
||||
|
||||
In the example below the ptime value is set to 40, indicating that
|
||||
there are 2 frames in each packet.
|
||||
|
||||
m=audio 8008 RTP/AVP 97
|
||||
a=rtpmap:97 speex/8000
|
||||
a=ptime:40
|
||||
|
||||
Note that the ptime parameter applies to all payloads listed in the
|
||||
media line and is not used as part of an a=fmtp directive.
|
||||
|
||||
Values of ptime not multiple of 20 msec are meaningless, so the
|
||||
receiver of such ptime values MUST ignore them. If during the life
|
||||
of an RTP session the ptime value changes, when there are multiple
|
||||
Speex frames for example, the SDP value must also reflect the new
|
||||
value.
|
||||
|
||||
Care must be taken when setting the value of ptime so that the RTP
|
||||
packet size does not exceed the path MTU.
|
||||
|
||||
10. ITU H.323 Use of Speex
|
||||
|
||||
It is outside the scope of this document to cover the use of Speex
|
||||
and H.323, more details may be found on the Speex website [9].
|
||||
|
||||
11. Security Considerations
|
||||
|
||||
RTP packets using the payload format defined in this specification
|
||||
are subject to the security considerations discussed in the RTP
|
||||
specification [2], and any appropriate RTP profile. This implies
|
||||
that confidentiality of the media streams is achieved by encryption.
|
||||
Because the data compression used with this payload format is applied
|
||||
end-to-end, encryption may be performed after compression so there is
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires April 15, 2006 [Page 10]
|
||||
|
||||
Internet-Draft draft-ietf-avt-rtp-speex-00 October 2005
|
||||
|
||||
|
||||
no conflict between the two operations.
|
||||
|
||||
A potential denial-of-service threat exists for data encodings using
|
||||
compression techniques that have non-uniform receiver-end
|
||||
computational load. The attacker can inject pathological datagrams
|
||||
into the stream which are complex to decode and cause the receiver to
|
||||
be overloaded. However, this encoding does not exhibit any
|
||||
significant non-uniformity.
|
||||
|
||||
As with any IP-based protocol, in some circumstances a receiver may
|
||||
be overloaded simply by the receipt of too many packets, either
|
||||
desired or undesired. Network-layer authentication may be used to
|
||||
discard packets from undesired sources, but the processing cost of
|
||||
the authentication itself may be too high.
|
||||
|
||||
12. Acknowledgments
|
||||
|
||||
The authors would like to thank Equivalence Pty Ltd of Australia for
|
||||
their assistance in attempting to standardize the use of Speex in
|
||||
H.323 applications, and for implementing Speex in their open source
|
||||
OpenH323 stack. The authors would also like to thank Brian C. Wiles
|
||||
<brian@streamcomm.com> of StreamComm for his assistance in developing
|
||||
the proposed standard for Speex use in H.323 applications.
|
||||
|
||||
The authors would also like to thank the following members of the
|
||||
Speex and AVT communities for their input: Ross Finlayson, Federico
|
||||
Montesino Pouzols, Henning Schulzrinne, Magnus Westerlund.
|
||||
|
||||
13. References
|
||||
|
||||
13.1 Normative References
|
||||
|
||||
[1] Bradner, S., "Key words for use in RFCs to Indicate Requirement
|
||||
Levels", RFC 2119.
|
||||
|
||||
[2] Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson,
|
||||
"RTP: A Transport Protocol for real-time applications",
|
||||
RFC 3550.
|
||||
|
||||
[3] "Multipurpose Internet Mail Extensions (MIME) Part One: Format
|
||||
of Internet Message Bodies", RFC 2045.
|
||||
|
||||
[4] Jacobson, V. and M. Handley, "SDP: Session Description
|
||||
Protocol", RFC 2327.
|
||||
|
||||
[5] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and Video
|
||||
Conferences with Minimal Control.", RFC 3551.
|
||||
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires April 15, 2006 [Page 11]
|
||||
|
||||
Internet-Draft draft-ietf-avt-rtp-speex-00 October 2005
|
||||
|
||||
|
||||
[6] Walleij, L., "The application/ogg Media Type", RFC 3534.
|
||||
|
||||
13.2 Informative References
|
||||
|
||||
[7] "Speexenc/speexdec, reference command-line encoder/decoder",
|
||||
Speex website http://www.speex.org/.
|
||||
|
||||
[8] "CELP, U.S. Federal Standard 1016.", National Technical
|
||||
Information Service (NTIS) website http://www.ntis.gov/.
|
||||
|
||||
[9] "ITU H.323/H.245 Use of Speex", Speex
|
||||
website http://www.speex.org/itu/.
|
||||
|
||||
|
||||
Authors' Addresses
|
||||
|
||||
Greg Herlein
|
||||
2034 Filbert Street
|
||||
San Francisco, California 94123
|
||||
United States
|
||||
|
||||
Email: gherlein@herlein.com
|
||||
|
||||
|
||||
Simon Morlat
|
||||
35, av de Vizille App 42
|
||||
Grenoble 38000
|
||||
France
|
||||
|
||||
Email: simon.morlat@linphone.org
|
||||
|
||||
|
||||
Jean-Marc Valin
|
||||
Department of Electrical and Computer Engineering
|
||||
University of Sherbrooke
|
||||
2500 blvd Universite
|
||||
Sherbrooke, Quebec J1K 2R1
|
||||
Canada
|
||||
|
||||
Email: jean-marc.valin@usherbrooke.ca
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires April 15, 2006 [Page 12]
|
||||
|
||||
Internet-Draft draft-ietf-avt-rtp-speex-00 October 2005
|
||||
|
||||
|
||||
Roger Hardiman
|
||||
49 Nettleton Road
|
||||
Cheltenham, Gloucestershire GL51 6NR
|
||||
England
|
||||
|
||||
Email: roger@freebsd.org
|
||||
|
||||
|
||||
Phil Kerr
|
||||
England
|
||||
|
||||
Email: phil@plus24.com
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires April 15, 2006 [Page 13]
|
||||
|
||||
Internet-Draft draft-ietf-avt-rtp-speex-00 October 2005
|
||||
|
||||
|
||||
Intellectual Property Statement
|
||||
|
||||
The IETF takes no position regarding the validity or scope of any
|
||||
Intellectual Property Rights or other rights that might be claimed to
|
||||
pertain to the implementation or use of the technology described in
|
||||
this document or the extent to which any license under such rights
|
||||
might or might not be available; nor does it represent that it has
|
||||
made any independent effort to identify any such rights. Information
|
||||
on the procedures with respect to rights in RFC documents can be
|
||||
found in BCP 78 and BCP 79.
|
||||
|
||||
Copies of IPR disclosures made to the IETF Secretariat and any
|
||||
assurances of licenses to be made available, or the result of an
|
||||
attempt made to obtain a general license or permission for the use of
|
||||
such proprietary rights by implementers or users of this
|
||||
specification can be obtained from the IETF on-line IPR repository at
|
||||
http://www.ietf.org/ipr.
|
||||
|
||||
The IETF invites any interested party to bring to its attention any
|
||||
copyrights, patents or patent applications, or other proprietary
|
||||
rights that may cover technology that may be required to implement
|
||||
this standard. Please address the information to the IETF at
|
||||
ietf-ipr@ietf.org.
|
||||
|
||||
|
||||
Disclaimer of Validity
|
||||
|
||||
This document and the information contained herein are provided on an
|
||||
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
|
||||
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
|
||||
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
|
||||
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
|
||||
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
Copyright Statement
|
||||
|
||||
Copyright (C) The Internet Society (2005). This document is subject
|
||||
to the rights, licenses and restrictions contained in BCP 78, and
|
||||
except as set forth therein, the authors retain all their rights.
|
||||
|
||||
|
||||
Acknowledgment
|
||||
|
||||
Funding for the RFC Editor function is currently provided by the
|
||||
Internet Society.
|
||||
|
||||
|
||||
|
||||
|
||||
Herlein, et al. Expires April 15, 2006 [Page 14]
|
||||
|
||||
1008
Engine/lib/speex/doc/draft-ietf-avt-rtp-speex-01-tmp.txt
Normal file
1008
Engine/lib/speex/doc/draft-ietf-avt-rtp-speex-01-tmp.txt
Normal file
File diff suppressed because it is too large
Load diff
1288
Engine/lib/speex/doc/draft-ietf-avt-rtp-speex-05-tmp.txt
Normal file
1288
Engine/lib/speex/doc/draft-ietf-avt-rtp-speex-05-tmp.txt
Normal file
File diff suppressed because it is too large
Load diff
1298
Engine/lib/speex/doc/echo_path.eps
Normal file
1298
Engine/lib/speex/doc/echo_path.eps
Normal file
File diff suppressed because it is too large
Load diff
BIN
Engine/lib/speex/doc/echo_path.odg
Normal file
BIN
Engine/lib/speex/doc/echo_path.odg
Normal file
Binary file not shown.
12085
Engine/lib/speex/doc/manual.lyx
Normal file
12085
Engine/lib/speex/doc/manual.lyx
Normal file
File diff suppressed because it is too large
Load diff
BIN
Engine/lib/speex/doc/manual.pdf
Normal file
BIN
Engine/lib/speex/doc/manual.pdf
Normal file
Binary file not shown.
182
Engine/lib/speex/doc/nb_celp.c
Normal file
182
Engine/lib/speex/doc/nb_celp.c
Normal file
|
|
@ -0,0 +1,182 @@
|
|||
#include <math.h>
|
||||
#include "nb_celp.h"
|
||||
#include "lsp.h"
|
||||
#include "ltp.h"
|
||||
#include "quant_lsp.h"
|
||||
#include "cb_search.h"
|
||||
#include "filters.h"
|
||||
#include "os_support.h"
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL 0
|
||||
#endif
|
||||
|
||||
#define LSP_MARGIN .002f
|
||||
#define SIG_SCALING 1.f
|
||||
#define NB_DEC_BUFFER (NB_FRAME_SIZE+2*NB_PITCH_END+NB_SUBFRAME_SIZE+12)
|
||||
#define NB_ORDER 10
|
||||
#define NB_FRAME_SIZE 160
|
||||
#define NB_SUBFRAME_SIZE 40
|
||||
#define NB_NB_SUBFRAMES 4
|
||||
#define NB_PITCH_START 17
|
||||
#define NB_PITCH_END 144
|
||||
|
||||
|
||||
struct speex_decode_state {
|
||||
float excBuf[NB_DEC_BUFFER]; /**< Excitation buffer */
|
||||
float *exc; /**< Start of excitation frame */
|
||||
float old_qlsp[10]; /**< Quantized LSPs for previous frame */
|
||||
float interp_qlpc[10]; /**< Interpolated quantized LPCs */
|
||||
float mem_sp[10]; /**< Filter memory for synthesis signal */
|
||||
int first; /**< Is this the first frame? */
|
||||
};
|
||||
|
||||
|
||||
static const float exc_gain_quant_scal1[2] = {0.70469f, 1.05127f};
|
||||
|
||||
|
||||
struct speex_decode_state *nb_decoder_init(void)
|
||||
{
|
||||
struct speex_decode_state *st;
|
||||
|
||||
st = malloc(sizeof(*st));
|
||||
if (!st)
|
||||
return NULL;
|
||||
|
||||
memset(st, 0, sizeof(*st));
|
||||
st->first = 1;
|
||||
|
||||
return st;
|
||||
}
|
||||
|
||||
|
||||
void nb_decoder_destroy(struct speex_decode_state *state)
|
||||
{
|
||||
if (state)
|
||||
free(state);
|
||||
}
|
||||
|
||||
|
||||
/* basic decoder using mode3 only */
|
||||
int nb_decode(struct speex_decode_state *st, SpeexBits *bits, float *out)
|
||||
{
|
||||
int i, sub, wideband, mode, qe;
|
||||
float ol_gain;
|
||||
float innov[NB_SUBFRAME_SIZE];
|
||||
float exc32[NB_SUBFRAME_SIZE];
|
||||
float qlsp[NB_ORDER], interp_qlsp[NB_ORDER];
|
||||
float ak[NB_ORDER];
|
||||
|
||||
if (!bits)
|
||||
return -1;
|
||||
|
||||
st->exc = st->excBuf + 2*NB_PITCH_END + NB_SUBFRAME_SIZE + 6;
|
||||
|
||||
/* Decode Sub-modes */
|
||||
do {
|
||||
if (speex_bits_remaining(bits) < 5)
|
||||
return -1;
|
||||
|
||||
wideband = speex_bits_unpack_unsigned(bits, 1);
|
||||
if (wideband) {
|
||||
printf("wideband not supported\n");
|
||||
return -2;
|
||||
}
|
||||
|
||||
mode = speex_bits_unpack_unsigned(bits, 4);
|
||||
if (mode == 15)
|
||||
return -1;
|
||||
|
||||
} while (mode > 8);
|
||||
|
||||
if (mode != 3) {
|
||||
printf("only mode 3 supported\n");
|
||||
return -2;
|
||||
}
|
||||
|
||||
/* Shift all buffers by one frame */
|
||||
SPEEX_MOVE(st->excBuf, st->excBuf+NB_FRAME_SIZE,
|
||||
2*NB_PITCH_END + NB_SUBFRAME_SIZE + 12);
|
||||
|
||||
/* Unquantize LSPs */
|
||||
lsp_unquant_lbr(qlsp, NB_ORDER, bits);
|
||||
|
||||
/* Handle first frame */
|
||||
if (st->first) {
|
||||
st->first = 0;
|
||||
|
||||
for (i=0; i<NB_ORDER; i++)
|
||||
st->old_qlsp[i] = qlsp[i];
|
||||
}
|
||||
|
||||
/* Get global excitation gain */
|
||||
qe = speex_bits_unpack_unsigned(bits, 5);
|
||||
ol_gain = SIG_SCALING*exp(qe/3.5);
|
||||
|
||||
/* Loop on subframes */
|
||||
for (sub=0; sub<4; sub++) {
|
||||
int offset, q_energy;
|
||||
float *exc, *sp;
|
||||
float ener;
|
||||
|
||||
offset = NB_SUBFRAME_SIZE*sub;
|
||||
exc = st->exc + offset;
|
||||
sp = out + offset;
|
||||
|
||||
SPEEX_MEMSET(exc, 0, NB_SUBFRAME_SIZE);
|
||||
|
||||
/* Adaptive codebook contribution */
|
||||
pitch_unquant_3tap(exc, exc32, NB_PITCH_START,
|
||||
NB_SUBFRAME_SIZE, bits, 0);
|
||||
|
||||
sanitize_values32(exc32, -32000, 32000, NB_SUBFRAME_SIZE);
|
||||
|
||||
/* Unquantize the innovation */
|
||||
SPEEX_MEMSET(innov, 0, NB_SUBFRAME_SIZE);
|
||||
|
||||
/* Decode sub-frame gain correction */
|
||||
q_energy = speex_bits_unpack_unsigned(bits, 1);
|
||||
ener = exc_gain_quant_scal1[q_energy] * ol_gain;
|
||||
|
||||
/* Fixed codebook contribution */
|
||||
split_cb_shape_sign_unquant(innov, bits);
|
||||
|
||||
/* De-normalize innovation and update excitation */
|
||||
signal_mul(innov, innov, ener, NB_SUBFRAME_SIZE);
|
||||
|
||||
for (i=0; i<NB_SUBFRAME_SIZE; i++) {
|
||||
exc[i] = exc32[i] + innov[i];
|
||||
}
|
||||
}
|
||||
|
||||
SPEEX_COPY(out, &st->exc[-NB_SUBFRAME_SIZE], NB_FRAME_SIZE);
|
||||
|
||||
/* Loop on subframes */
|
||||
for (sub=0; sub<4; sub++) {
|
||||
const int offset = NB_SUBFRAME_SIZE*sub;
|
||||
float *sp, *exc;
|
||||
|
||||
sp = out + offset;
|
||||
exc = st->exc + offset;
|
||||
|
||||
/* LSP interpolation (quantized and unquantized) */
|
||||
lsp_interpolate(st->old_qlsp, qlsp, interp_qlsp, NB_ORDER,
|
||||
sub, NB_NB_SUBFRAMES, LSP_MARGIN);
|
||||
|
||||
/* Compute interpolated LPCs (unquantized) */
|
||||
lsp_to_lpc(interp_qlsp, ak, NB_ORDER);
|
||||
|
||||
iir_mem16(sp, st->interp_qlpc, sp, NB_SUBFRAME_SIZE,
|
||||
NB_ORDER, st->mem_sp);
|
||||
|
||||
/* Save for interpolation in next frame */
|
||||
for (i=0; i<NB_ORDER; i++)
|
||||
st->interp_qlpc[i] = ak[i];
|
||||
}
|
||||
|
||||
/* Store the LSPs for interpolation in the next frame */
|
||||
for (i=0; i<NB_ORDER; i++)
|
||||
st->old_qlsp[i] = qlsp[i];
|
||||
|
||||
return 0;
|
||||
}
|
||||
125
Engine/lib/speex/doc/programming.html
Normal file
125
Engine/lib/speex/doc/programming.html
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>Speex Programming</title>
|
||||
|
||||
<meta http-equiv="content-type"
|
||||
content="text/html; charset=ISO-8859-1">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div align="center">
|
||||
<h1>Speex Programming</h1>
|
||||
|
||||
<div align="left">
|
||||
<h2>Encoding</h2>
|
||||
In order to encode speech using Speex, you first need to:<br>
|
||||
|
||||
<blockquote>
|
||||
<pre><big>#include <speex.h></big></pre>
|
||||
</blockquote>
|
||||
You then need to declare a Speex bit-packing struct<br>
|
||||
|
||||
<blockquote>
|
||||
<pre><big>SpeexBits bits;</big></pre>
|
||||
</blockquote>
|
||||
and a Speex encoder state<br>
|
||||
|
||||
<blockquote>
|
||||
<pre><big>void *enc_state;</big></pre>
|
||||
</blockquote>
|
||||
The two are initialized by:<br>
|
||||
|
||||
<blockquote>
|
||||
<pre><big>speex_bits_init(&bits);</big></pre>
|
||||
|
||||
<pre><big>enc_state = speex_encoder_init(&speex_nb_mode);</big></pre>
|
||||
</blockquote>
|
||||
For wideband coding, <i>speex_nb_mode</i> will be replaced by <i>speex_wb_mode</i>
|
||||
. In most cases, you will need to know the frame size used by the mode you
|
||||
are using. You can get that value in the <i>frame_size</i> variable with:<br>
|
||||
<blockquote><big><tt>speex_encoder_ctl(enc_state, SPEEX_GET_FRAME_SIZE, &frame_size);</tt></big><br>
|
||||
</blockquote>
|
||||
For every input frame:<br>
|
||||
|
||||
<blockquote>
|
||||
<pre><big>speex_bits_reset(&bits);</big></pre>
|
||||
|
||||
<pre><big>speex_encode(enc_state, input_frame, &bits);</big></pre>
|
||||
|
||||
<pre><big>nbBytes = speex_bits_write(&bits, byte_ptr, MAX_NB_BYTES);</big></pre>
|
||||
</blockquote>
|
||||
where <i>input_frame</i> is a <i>(float *)</i> pointing to the beginning
|
||||
of a speech frame, byte_ptr is a <i>(char *)</i> where the encoded frame will
|
||||
be written, <i>MAX_NB_BYTES</i> is the maximum number of bytes that can be
|
||||
written to <i>byte_ptr</i> without causing an overflow and <i>nbBytes</i>
|
||||
is the number of bytes actually written to <i>byte_ptr</i> (the encoded
|
||||
size in bytes).<br>
|
||||
<br>
|
||||
After you're done with the encoding, free all resources with:<br>
|
||||
|
||||
<blockquote>
|
||||
<pre><big>speex_bits_destroy(&bits);</big></pre>
|
||||
|
||||
<pre><big>speex_encoder_destroy(&enc_state);</big></pre>
|
||||
</blockquote>
|
||||
That's about it for the encoder.<br>
|
||||
|
||||
<h2>Decoding</h2>
|
||||
In order to encode speech using Speex, you first need to:<br>
|
||||
|
||||
<blockquote>
|
||||
<pre><big>#include <speex.h></big></pre>
|
||||
</blockquote>
|
||||
You then need to declare a Speex bit-packing struct<br>
|
||||
|
||||
<blockquote>
|
||||
<pre><big>SpeexBits bits;</big></pre>
|
||||
</blockquote>
|
||||
and a Speex encoder state<br>
|
||||
|
||||
<blockquote>
|
||||
<pre><big>void *dec_state;</big></pre>
|
||||
</blockquote>
|
||||
The two are initialized by:<br>
|
||||
|
||||
<blockquote>
|
||||
<pre><big>speex_bits_init(&bits);</big></pre>
|
||||
|
||||
<pre><big>dec_state = speex_decoder_init(&speex_nb_mode);</big></pre>
|
||||
</blockquote>
|
||||
For wideband decoding, <i>speex_nb_mode</i> will be replaced by <i>speex_wb_mode</i>
|
||||
. You can get that value in the <i>frame_size</i> variable with:<br>
|
||||
|
||||
<blockquote><big><tt>speex_decoder_ctl(dec_state, SPEEX_GET_FRAME_SIZE, &frame_size);</tt></big><br>
|
||||
</blockquote>
|
||||
There is also a parameter that can be set for the decoder: whether or not
|
||||
to use a perceptual post-filter. This can be set by:<br>
|
||||
<blockquote><big><tt>speex_decoder_ctl(dec_state, SPEEX_SET_PF, &pf);</tt></big><br>
|
||||
</blockquote>
|
||||
where <i>pf</i> is an <i>int</i> that with value 0 to have the post-filter
|
||||
disabled and 1 to have it enabled.<br>
|
||||
<br>
|
||||
For every input frame:<br>
|
||||
|
||||
<blockquote>
|
||||
<pre><big>speex_bits_read_from(&bits, input_bytes, nbBytes);</big></pre>
|
||||
|
||||
<pre><big>speex_decode(st, &bits, output_frame, 0);</big></pre>
|
||||
</blockquote>
|
||||
where <i>input_bytes</i> is a <i>(char *)</i> containing the bit-stream
|
||||
data received for a frame, <i>nbBytes</i> is the size (in bytes) of that
|
||||
bit-stream, and <i>output_frame</i> is a <i>(float *)</i> and points to the
|
||||
area where the decoded speech frame will be written. The last argument indicates
|
||||
whether the frame we'd like to decode was lost. A value of 0 indicates the
|
||||
normal case where bits points to the bit of the current frame. A value of
|
||||
1 indicates that we don't have the bits for the current frame, in which case
|
||||
the bits argument should be the same as the bits for the last correctly received
|
||||
frame. When a frame is lost, the Speex decoder will do its best to "guess"
|
||||
the sorrect signal.<br>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
2045
Engine/lib/speex/doc/ref_shaping.eps
Normal file
2045
Engine/lib/speex/doc/ref_shaping.eps
Normal file
File diff suppressed because it is too large
Load diff
76
Engine/lib/speex/doc/rtp.txt
Normal file
76
Engine/lib/speex/doc/rtp.txt
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
The Speex RTP payload is defined as a header, followed by any number of
|
||||
requests to the remote encoder and all encoded speech frames.
|
||||
|
||||
+--------+----------+----------------+
|
||||
| Header | Requests | Speech data... |
|
||||
+--------+----------+----------------+
|
||||
|
||||
The header contains only the number of frames sent
|
||||
encoded in 6 bits
|
||||
|
||||
0 1 2 3 4 5
|
||||
+-+-+-+-+-+-+
|
||||
| NB frames |
|
||||
+-+-+-+-+-+-+
|
||||
|
||||
There can be any number of requests of the form
|
||||
|
||||
0 1 2 3 4 5 6 7 0 1
|
||||
+-+-+-+-+-+-+-+-+-+-+
|
||||
|R| ReqID | ReqVal |
|
||||
+-+-+-+-+-+-+-+-+-+-+
|
||||
|
||||
where R is 1 when a request is following and 0 when there is no more
|
||||
request. Each request (if R=1) is composed of a 4-bit request ID (ReqID) and
|
||||
a 5-bit value (ReqVal)
|
||||
|
||||
Possible values for ReqID are:
|
||||
0: REQ_PERSIST ReqVal=1 for persistent requests/mode selection,
|
||||
0 otherwise
|
||||
1: PERSIST_ACK Acknowledge a REQ_PERSIST from the other end,
|
||||
ReqVal equals the value received
|
||||
2: MODE Choose the encoder mode directly
|
||||
3: QUALITY Choose the encoder quality
|
||||
4: VBR Set VBR on (ReqVal=1) or off (ReqVal=2)
|
||||
5: VBR_QUALITY Set the encoder quality for VBR mode
|
||||
6: LOW_MODE Set the encoder mode for low-band (wideband only)
|
||||
7: HIGH_MODE Set the encoder mode for high-band (wideband only)
|
||||
|
||||
All requests should be considered at the receiver as a suggestion and
|
||||
compliance is not mandatory. The PERSIST_ACK should be sent upon receiving a
|
||||
REQ_PERSIST request to indicate that the request has been received.
|
||||
|
||||
The speech data part contains speech frames one after the other. The size of
|
||||
the encoded frames can be found since the mode is directly encoded into each
|
||||
frame.
|
||||
|
||||
For example, a frame where we request VBR to be on with quality 8 and we
|
||||
transmit two frames encoded at 8.35 kbps (167 bits/frame) will be:
|
||||
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| NB=2 |1|ReqID=2| ReqVal=0|1|ReqID=3|ReqVal=8 |0| frame 1 |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| frame 1 |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| frame 1 |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| frame 1 |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| frame 1 |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| frame 1 |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|end| frame 2 |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| frame 2 |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| frame 2 |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| frame 2 |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| frame 2 |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| end frame 2 |P|P|P|P|P|P|
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
65
Engine/lib/speex/doc/sampledec.c
Normal file
65
Engine/lib/speex/doc/sampledec.c
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
#include <speex/speex.h>
|
||||
#include <stdio.h>
|
||||
|
||||
/*The frame size in hardcoded for this sample code but it doesn't have to be*/
|
||||
#define FRAME_SIZE 160
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
char *outFile;
|
||||
FILE *fout;
|
||||
/*Holds the audio that will be written to file (16 bits per sample)*/
|
||||
short out[FRAME_SIZE];
|
||||
/*Speex handle samples as float, so we need an array of floats*/
|
||||
float output[FRAME_SIZE];
|
||||
char cbits[200];
|
||||
int nbBytes;
|
||||
/*Holds the state of the decoder*/
|
||||
void *state;
|
||||
/*Holds bits so they can be read and written to by the Speex routines*/
|
||||
SpeexBits bits;
|
||||
int i, tmp;
|
||||
|
||||
/*Create a new decoder state in narrowband mode*/
|
||||
state = speex_decoder_init(&speex_nb_mode);
|
||||
|
||||
/*Set the perceptual enhancement on*/
|
||||
tmp=1;
|
||||
speex_decoder_ctl(state, SPEEX_SET_ENH, &tmp);
|
||||
|
||||
outFile = argv[1];
|
||||
fout = fopen(outFile, "w");
|
||||
|
||||
/*Initialization of the structure that holds the bits*/
|
||||
speex_bits_init(&bits);
|
||||
while (1)
|
||||
{
|
||||
/*Read the size encoded by sampleenc, this part will likely be
|
||||
different in your application*/
|
||||
fread(&nbBytes, sizeof(int), 1, stdin);
|
||||
fprintf (stderr, "nbBytes: %d\n", nbBytes);
|
||||
if (feof(stdin))
|
||||
break;
|
||||
|
||||
/*Read the "packet" encoded by sampleenc*/
|
||||
fread(cbits, 1, nbBytes, stdin);
|
||||
/*Copy the data into the bit-stream struct*/
|
||||
speex_bits_read_from(&bits, cbits, nbBytes);
|
||||
|
||||
/*Decode the data*/
|
||||
speex_decode(state, &bits, output);
|
||||
|
||||
/*Copy from float to short (16 bits) for output*/
|
||||
for (i=0;i<FRAME_SIZE;i++)
|
||||
out[i]=output[i];
|
||||
|
||||
/*Write the decoded audio to file*/
|
||||
fwrite(out, sizeof(short), FRAME_SIZE, fout);
|
||||
}
|
||||
|
||||
/*Destroy the decoder state*/
|
||||
speex_decoder_destroy(state);
|
||||
/*Destroy the bit-stream truct*/
|
||||
speex_bits_destroy(&bits);
|
||||
fclose(fout);
|
||||
return 0;
|
||||
}
|
||||
64
Engine/lib/speex/doc/sampleenc.c
Normal file
64
Engine/lib/speex/doc/sampleenc.c
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
#include <speex/speex.h>
|
||||
#include <stdio.h>
|
||||
|
||||
/*The frame size in hardcoded for this sample code but it doesn't have to be*/
|
||||
#define FRAME_SIZE 160
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
char *inFile;
|
||||
FILE *fin;
|
||||
short in[FRAME_SIZE];
|
||||
float input[FRAME_SIZE];
|
||||
char cbits[200];
|
||||
int nbBytes;
|
||||
/*Holds the state of the encoder*/
|
||||
void *state;
|
||||
/*Holds bits so they can be read and written to by the Speex routines*/
|
||||
SpeexBits bits;
|
||||
int i, tmp;
|
||||
|
||||
/*Create a new encoder state in narrowband mode*/
|
||||
state = speex_encoder_init(&speex_nb_mode);
|
||||
|
||||
/*Set the quality to 8 (15 kbps)*/
|
||||
tmp=8;
|
||||
speex_encoder_ctl(state, SPEEX_SET_QUALITY, &tmp);
|
||||
|
||||
inFile = argv[1];
|
||||
fin = fopen(inFile, "r");
|
||||
|
||||
/*Initialization of the structure that holds the bits*/
|
||||
speex_bits_init(&bits);
|
||||
while (1)
|
||||
{
|
||||
/*Read a 16 bits/sample audio frame*/
|
||||
fread(in, sizeof(short), FRAME_SIZE, fin);
|
||||
if (feof(fin))
|
||||
break;
|
||||
/*Copy the 16 bits values to float so Speex can work on them*/
|
||||
for (i=0;i<FRAME_SIZE;i++)
|
||||
input[i]=in[i];
|
||||
|
||||
/*Flush all the bits in the struct so we can encode a new frame*/
|
||||
speex_bits_reset(&bits);
|
||||
|
||||
/*Encode the frame*/
|
||||
speex_encode(state, input, &bits);
|
||||
/*Copy the bits to an array of char that can be written*/
|
||||
nbBytes = speex_bits_write(&bits, cbits, 200);
|
||||
|
||||
/*Write the size of the frame first. This is what sampledec expects but
|
||||
it's likely to be different in your own application*/
|
||||
fwrite(&nbBytes, sizeof(int), 1, stdout);
|
||||
/*Write the compressed data*/
|
||||
fwrite(cbits, 1, nbBytes, stdout);
|
||||
|
||||
}
|
||||
|
||||
/*Destroy the encoder state*/
|
||||
speex_encoder_destroy(state);
|
||||
/*Destroy the bit-packing struct*/
|
||||
speex_bits_destroy(&bits);
|
||||
fclose(fin);
|
||||
return 0;
|
||||
}
|
||||
3022
Engine/lib/speex/doc/speex_abs.eps
Normal file
3022
Engine/lib/speex/doc/speex_abs.eps
Normal file
File diff suppressed because it is too large
Load diff
BIN
Engine/lib/speex/doc/speex_abs.odg
Normal file
BIN
Engine/lib/speex/doc/speex_abs.odg
Normal file
Binary file not shown.
744
Engine/lib/speex/doc/speex_analysis.eps
Normal file
744
Engine/lib/speex/doc/speex_analysis.eps
Normal file
|
|
@ -0,0 +1,744 @@
|
|||
%!PS-Adobe-3.0 EPSF-3.0
|
||||
%%BoundingBox: 0 0 465 180
|
||||
%%Pages: 0
|
||||
%%Creator: Sun Microsystems, Inc.
|
||||
%%Title: none
|
||||
%%CreationDate: none
|
||||
%%LanguageLevel: 2
|
||||
%%EndComments
|
||||
%%BeginProlog
|
||||
%%BeginResource: SDRes
|
||||
/b4_inc_state save def
|
||||
/dict_count countdictstack def
|
||||
/op_count count 1 sub def
|
||||
userdict begin
|
||||
0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit[] 0 setdash newpath
|
||||
/languagelevel where {pop languagelevel 1 ne {false setstrokeadjust false setoverprint} if} if
|
||||
/bdef {bind def} bind def
|
||||
/c {setgray} bdef
|
||||
/l {neg lineto} bdef
|
||||
/rl {neg rlineto} bdef
|
||||
/lc {setlinecap} bdef
|
||||
/lj {setlinejoin} bdef
|
||||
/lw {setlinewidth} bdef
|
||||
/ml {setmiterlimit} bdef
|
||||
/ld {setdash} bdef
|
||||
/m {neg moveto} bdef
|
||||
/ct {6 2 roll neg 6 2 roll neg 6 2 roll neg curveto} bdef
|
||||
/r {rotate} bdef
|
||||
/t {neg translate} bdef
|
||||
/s {scale} bdef
|
||||
/sw {show} bdef
|
||||
/gs {gsave} bdef
|
||||
/gr {grestore} bdef
|
||||
/f {findfont dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def
|
||||
currentdict end /NFont exch definefont pop /NFont findfont} bdef
|
||||
/p {closepath} bdef
|
||||
/sf {scalefont setfont} bdef
|
||||
/ef {eofill}bdef
|
||||
/pc {closepath stroke}bdef
|
||||
/ps {stroke}bdef
|
||||
/pum {matrix currentmatrix}bdef
|
||||
/pom {setmatrix}bdef
|
||||
/bs {/aString exch def /nXOfs exch def /nWidth exch def currentpoint nXOfs 0 rmoveto pum nWidth aString stringwidth pop div 1 scale aString show pom moveto} bdef
|
||||
%%EndResource
|
||||
%%EndProlog
|
||||
%%BeginSetup
|
||||
%%EndSetup
|
||||
%%Page: 1 1
|
||||
%%BeginPageSetup
|
||||
%%EndPageSetup
|
||||
pum
|
||||
0.02832 0.02831 s
|
||||
0 -6358 t
|
||||
/tm matrix currentmatrix def
|
||||
tm setmatrix
|
||||
-700 -3000 t
|
||||
1 1 s
|
||||
50 lw 1 lj 0.000 c 3900 7000 m 3100 7000 l 3100 5500 l 4700 5500 l 4700 7000 l
|
||||
3900 7000 l pc
|
||||
gs
|
||||
gs
|
||||
pum
|
||||
3293 6460 t
|
||||
47 0 m 47 -455 l 107 -455 l 107 -54 l 330 -54 l 330 0 l 47 0 l p ef
|
||||
400 0 m 400 0 400 0 400 -455 ct 400 -455 400 -455 571 -455 ct 602 -455 625 -454 641 -451 ct
|
||||
663 -447 682 -440 697 -429 ct 712 -419 724 -404 733 -385 ct 742 -367 747 -346 747 -323 ct
|
||||
747 -285 735 -252 710 -225 ct 685 -198 641 -185 577 -185 ct 577 -185 577 -185 460 -185 ct
|
||||
460 -185 460 -185 460 0 ct 460 0 460 0 400 0 ct p
|
||||
460 -239 m 460 -239 460 -239 578 -239 ct 617 -239 644 -246 660 -261 ct 677 -275 685 -295 685 -322 ct
|
||||
685 -341 680 -357 671 -370 ct 661 -384 648 -393 633 -397 ct 622 -400 604 -401 576 -401 ct
|
||||
576 -401 576 -401 460 -401 ct 460 -401 460 -401 460 -239 ct p ef
|
||||
1149 -159 m 1149 -159 1149 -159 1209 -144 ct 1196 -95 1174 -57 1141 -31 ct
|
||||
1108 -5 1068 8 1021 8 ct 972 8 932 -2 901 -22 ct 870 -42 847 -71 831 -109 ct 815 -147 807 -187 807 -231 ct
|
||||
807 -278 816 -320 834 -355 ct 852 -390 878 -417 911 -436 ct 945 -454 981 -463 1022 -463 ct
|
||||
1067 -463 1105 -451 1136 -428 ct 1167 -405 1189 -373 1201 -331 ct 1201 -331 1201 -331 1142 -317 ct
|
||||
1131 -350 1116 -374 1096 -389 ct 1076 -404 1051 -412 1020 -412 ct 985 -412 956 -404 933 -387 ct
|
||||
909 -370 893 -347 883 -319 ct 874 -291 869 -261 869 -231 ct 869 -192 875 -158 886 -129 ct
|
||||
897 -101 915 -79 939 -65 ct 962 -50 988 -43 1016 -43 ct 1050 -43 1078 -53 1102 -72 ct
|
||||
1125 -92 1141 -121 1149 -159 ct p ef
|
||||
pom
|
||||
gr
|
||||
gr
|
||||
gs
|
||||
gs
|
||||
pum
|
||||
1170 3636 t
|
||||
181 -260 m 181 -260 181 -260 181 -174 ct 181 -174 181 -174 171 -174 ct 164 -201 155 -220 145 -229 ct
|
||||
134 -239 120 -244 103 -244 ct 91 -244 80 -241 73 -234 ct 65 -227 61 -219 61 -211 ct
|
||||
61 -201 64 -192 70 -185 ct 75 -177 87 -169 104 -161 ct 104 -161 104 -161 144 -141 ct
|
||||
181 -123 200 -99 200 -69 ct 200 -47 191 -28 174 -14 ct 157 0 138 7 116 7 ct 101 7 83 4 64 -1 ct
|
||||
58 -2 53 -3 49 -3 ct 45 -3 41 -1 39 3 ct 39 3 39 3 29 3 ct 29 3 29 3 29 -87 ct 29 -87 29 -87 39 -87 ct
|
||||
44 -61 54 -42 68 -29 ct 83 -16 99 -9 116 -9 ct 129 -9 139 -13 147 -20 ct 155 -28 159 -37 159 -47 ct
|
||||
159 -60 155 -70 146 -79 ct 137 -88 119 -98 93 -111 ct 66 -124 48 -136 40 -147 ct
|
||||
32 -157 28 -171 28 -187 ct 28 -208 35 -225 49 -239 ct 63 -253 82 -260 104 -260 ct
|
||||
114 -260 126 -258 140 -254 ct 149 -251 155 -250 158 -250 ct 161 -250 164 -251 165 -252 ct
|
||||
167 -253 169 -256 171 -260 ct 171 -260 171 -260 181 -260 ct p ef
|
||||
220 -228 m 220 -228 220 -228 298 -259 ct 298 -259 298 -259 309 -259 ct 309 -259 309 -259 309 -201 ct
|
||||
322 -223 335 -238 348 -247 ct 361 -256 375 -260 389 -260 ct 414 -260 435 -250 452 -230 ct
|
||||
473 -206 483 -175 483 -136 ct 483 -92 471 -56 446 -28 ct 425 -5 400 7 369 7 ct
|
||||
355 7 343 5 334 1 ct 326 -2 318 -7 309 -16 ct 309 -16 309 -16 309 63 ct 309 80 310 91 312 96 ct
|
||||
314 100 318 104 323 107 ct 329 110 338 111 352 111 ct 352 111 352 111 352 121 ct
|
||||
352 121 352 121 217 121 ct 217 121 217 121 217 111 ct 217 111 217 111 224 111 ct
|
||||
234 111 243 109 251 105 ct 254 103 257 100 259 95 ct 261 91 262 79 262 61 ct 262 61 262 61 262 -179 ct
|
||||
262 -195 261 -205 260 -209 ct 258 -213 256 -216 253 -219 ct 250 -221 245 -222 240 -222 ct
|
||||
236 -222 230 -221 223 -218 ct 223 -218 223 -218 220 -228 ct p
|
||||
309 -185 m 309 -185 309 -185 309 -90 ct 309 -70 310 -57 311 -50 ct 314 -40 320 -30 330 -22 ct
|
||||
340 -14 353 -10 368 -10 ct 386 -10 401 -17 412 -31 ct 427 -50 434 -77 434 -111 ct
|
||||
434 -149 426 -179 409 -200 ct 397 -214 383 -221 367 -221 ct 359 -221 350 -219 341 -214 ct
|
||||
335 -211 324 -201 309 -185 ct p ef
|
||||
564 -158 m 564 -121 573 -92 591 -71 ct 609 -50 630 -39 655 -39 ct 671 -39 686 -43 698 -52 ct
|
||||
710 -61 720 -77 728 -99 ct 728 -99 728 -99 737 -94 ct 733 -68 722 -45 703 -24 ct
|
||||
685 -3 662 7 634 7 ct 604 7 578 -5 556 -28 ct 535 -52 524 -83 524 -123 ct 524 -166 535 -200 557 -224 ct
|
||||
579 -248 607 -260 640 -260 ct 668 -260 692 -251 710 -232 ct 728 -214 737 -189 737 -158 ct
|
||||
737 -158 737 -158 564 -158 ct p
|
||||
564 -174 m 564 -174 564 -174 680 -174 ct 679 -190 677 -201 674 -208 ct 670 -218 663 -226 654 -231 ct
|
||||
645 -237 635 -240 626 -240 ct 610 -240 597 -234 585 -223 ct 573 -211 566 -195 564 -174 ct
|
||||
p ef
|
||||
814 -158 m 814 -121 823 -92 841 -71 ct 859 -50 880 -39 905 -39 ct 921 -39 936 -43 948 -52 ct
|
||||
960 -61 970 -77 978 -99 ct 978 -99 978 -99 987 -94 ct 983 -68 972 -45 953 -24 ct
|
||||
935 -3 912 7 884 7 ct 854 7 828 -5 806 -28 ct 785 -52 774 -83 774 -123 ct 774 -166 785 -200 807 -224 ct
|
||||
829 -248 857 -260 890 -260 ct 918 -260 942 -251 960 -232 ct 978 -214 987 -189 987 -158 ct
|
||||
987 -158 987 -158 814 -158 ct p
|
||||
814 -174 m 814 -174 814 -174 930 -174 ct 929 -190 927 -201 924 -208 ct 920 -218 913 -226 904 -231 ct
|
||||
895 -237 885 -240 876 -240 ct 860 -240 847 -234 835 -223 ct 823 -211 816 -195 814 -174 ct
|
||||
p ef
|
||||
1236 -95 m 1229 -62 1216 -37 1196 -19 ct 1176 -2 1154 7 1130 7 ct 1101 7 1076 -5 1055 -29 ct
|
||||
1034 -53 1023 -85 1023 -126 ct 1023 -166 1035 -198 1058 -223 ct 1082 -248 1111 -260 1144 -260 ct
|
||||
1169 -260 1189 -253 1205 -240 ct 1221 -227 1229 -214 1229 -199 ct 1229 -192 1227 -187 1222 -182 ct
|
||||
1218 -178 1211 -176 1203 -176 ct 1193 -176 1185 -180 1179 -187 ct 1176 -190 1174 -198 1173 -209 ct
|
||||
1172 -220 1168 -228 1161 -234 ct 1155 -239 1146 -242 1135 -242 ct 1116 -242 1102 -235 1090 -222 ct
|
||||
1075 -204 1068 -180 1068 -150 ct 1068 -120 1075 -94 1090 -71 ct 1105 -48 1125 -36 1150 -36 ct
|
||||
1168 -36 1184 -42 1199 -54 ct 1209 -62 1218 -77 1228 -99 ct 1228 -99 1228 -99 1236 -95 ct
|
||||
p ef
|
||||
1345 -392 m 1345 -392 1345 -392 1345 -208 ct 1365 -230 1381 -244 1393 -251 ct
|
||||
1405 -257 1417 -260 1429 -260 ct 1443 -260 1456 -256 1466 -248 ct 1476 -240 1484 -228 1489 -211 ct
|
||||
1492 -199 1494 -178 1494 -146 ct 1494 -146 1494 -146 1494 -57 ct 1494 -41 1495 -30 1498 -24 ct
|
||||
1500 -20 1503 -16 1507 -14 ct 1511 -11 1519 -10 1531 -10 ct 1531 -10 1531 -10 1531 0 ct
|
||||
1531 0 1531 0 1407 0 ct 1407 0 1407 0 1407 -10 ct 1407 -10 1407 -10 1413 -10 ct
|
||||
1425 -10 1433 -12 1437 -15 ct 1442 -19 1445 -24 1447 -31 ct 1448 -34 1448 -43 1448 -57 ct
|
||||
1448 -57 1448 -57 1448 -147 ct 1448 -174 1447 -192 1444 -201 ct 1441 -210 1436 -216 1430 -221 ct
|
||||
1424 -225 1417 -227 1408 -227 ct 1399 -227 1389 -225 1380 -220 ct 1370 -215 1359 -205 1345 -191 ct
|
||||
1345 -191 1345 -191 1345 -57 ct 1345 -40 1346 -29 1348 -25 ct 1350 -21 1353 -17 1359 -14 ct
|
||||
1364 -11 1373 -10 1386 -10 ct 1386 -10 1386 -10 1386 0 ct 1386 0 1386 0 1262 0 ct
|
||||
1262 0 1262 0 1262 -10 ct 1273 -10 1281 -12 1287 -15 ct 1291 -17 1294 -21 1296 -26 ct
|
||||
1298 -31 1299 -41 1299 -57 ct 1299 -57 1299 -57 1299 -286 ct 1299 -314 1298 -332 1297 -338 ct
|
||||
1296 -345 1294 -349 1291 -352 ct 1288 -354 1284 -355 1279 -355 ct 1276 -355 1269 -354 1261 -351 ct
|
||||
1261 -351 1261 -351 1257 -361 ct 1257 -361 1257 -361 1332 -392 ct 1332 -392 1332 -392 1345 -392 ct
|
||||
p ef
|
||||
pom
|
||||
gr
|
||||
gs
|
||||
pum
|
||||
1286 4263 t
|
||||
117 -233 m 117 -233 117 -233 117 -67 ct 117 -43 120 -28 125 -22 ct 132 -14 141 -10 152 -10 ct
|
||||
152 -10 152 -10 175 -10 ct 175 -10 175 -10 175 0 ct 175 0 175 0 24 0 ct 24 0 24 0 24 -10 ct
|
||||
24 -10 24 -10 35 -10 ct 43 -10 49 -12 55 -16 ct 61 -19 65 -24 68 -30 ct 70 -37 71 -49 71 -67 ct
|
||||
71 -67 71 -67 71 -233 ct 71 -233 71 -233 22 -233 ct 22 -233 22 -233 22 -253 ct
|
||||
22 -253 22 -253 71 -253 ct 71 -253 71 -253 71 -270 ct 71 -295 75 -316 83 -334 ct
|
||||
91 -351 104 -365 120 -376 ct 137 -387 156 -392 177 -392 ct 196 -392 214 -386 230 -373 ct
|
||||
241 -365 246 -355 246 -345 ct 246 -340 244 -334 239 -329 ct 234 -324 229 -322 223 -322 ct
|
||||
219 -322 215 -324 210 -327 ct 205 -330 200 -336 193 -346 ct 186 -356 180 -363 174 -367 ct
|
||||
168 -370 162 -372 155 -372 ct 147 -372 139 -370 134 -365 ct 128 -361 123 -354 121 -344 ct
|
||||
118 -335 117 -310 117 -271 ct 117 -271 117 -271 117 -253 ct 117 -253 117 -253 182 -253 ct
|
||||
182 -253 182 -253 182 -233 ct 182 -233 182 -233 117 -233 ct p ef
|
||||
283 -260 m 283 -260 283 -260 283 -203 ct 304 -241 326 -260 348 -260 ct 358 -260 366 -257 373 -251 ct
|
||||
380 -245 383 -238 383 -230 ct 383 -222 381 -216 376 -211 ct 371 -206 365 -204 359 -204 ct
|
||||
352 -204 345 -207 337 -214 ct 329 -220 323 -223 319 -223 ct 316 -223 312 -221 309 -217 ct
|
||||
300 -210 292 -198 283 -180 ct 283 -180 283 -180 283 -59 ct 283 -45 285 -34 288 -27 ct
|
||||
291 -22 295 -18 301 -15 ct 307 -12 316 -10 328 -10 ct 328 -10 328 -10 328 0 ct
|
||||
328 0 328 0 196 0 ct 196 0 196 0 196 -10 ct 209 -10 219 -12 226 -16 ct 230 -19 234 -24 236 -30 ct
|
||||
237 -33 237 -42 237 -57 ct 237 -57 237 -57 237 -154 ct 237 -184 236 -201 235 -207 ct
|
||||
234 -213 232 -217 229 -219 ct 226 -222 222 -223 217 -223 ct 211 -223 205 -222 198 -219 ct
|
||||
198 -219 198 -219 195 -229 ct 195 -229 195 -229 271 -260 ct 271 -260 271 -260 283 -260 ct
|
||||
p ef
|
||||
538 -37 m 512 -17 496 -5 489 -2 ct 479 3 469 5 457 5 ct 440 5 425 -1 414 -13 ct
|
||||
403 -25 397 -40 397 -60 ct 397 -72 400 -83 405 -92 ct 413 -104 426 -116 445 -127 ct
|
||||
463 -138 495 -151 538 -167 ct 538 -167 538 -167 538 -177 ct 538 -202 534 -219 526 -228 ct
|
||||
518 -237 507 -242 491 -242 ct 480 -242 471 -239 464 -233 ct 457 -226 453 -219 453 -211 ct
|
||||
453 -211 453 -211 454 -195 ct 454 -187 452 -180 447 -176 ct 443 -171 437 -169 430 -169 ct
|
||||
424 -169 418 -171 414 -176 ct 409 -181 407 -188 407 -196 ct 407 -212 415 -227 431 -240 ct
|
||||
447 -253 470 -260 499 -260 ct 521 -260 540 -256 554 -249 ct 565 -243 573 -234 578 -222 ct
|
||||
581 -214 583 -198 583 -174 ct 583 -174 583 -174 583 -89 ct 583 -65 583 -50 584 -45 ct
|
||||
585 -39 587 -36 589 -34 ct 591 -32 593 -31 596 -31 ct 599 -31 602 -32 604 -33 ct
|
||||
608 -35 615 -42 626 -53 ct 626 -53 626 -53 626 -38 ct 606 -10 586 4 568 4 ct 559 4 551 1 546 -5 ct
|
||||
541 -11 538 -22 538 -37 ct p
|
||||
538 -54 m 538 -54 538 -54 538 -149 ct 510 -138 492 -130 484 -126 ct 469 -118 459 -110 452 -101 ct
|
||||
446 -92 443 -83 443 -72 ct 443 -59 447 -49 455 -40 ct 463 -31 472 -27 482 -27 ct
|
||||
497 -27 515 -36 538 -54 ct p ef
|
||||
720 -206 m 738 -225 749 -235 752 -238 ct 761 -245 769 -250 779 -254 ct 789 -258 798 -260 807 -260 ct
|
||||
823 -260 837 -255 848 -246 ct 859 -237 867 -224 871 -206 ct 890 -228 906 -243 919 -250 ct
|
||||
932 -257 945 -260 959 -260 ct 972 -260 984 -257 994 -250 ct 1005 -243 1013 -232 1019 -216 ct
|
||||
1023 -205 1025 -188 1025 -166 ct 1025 -166 1025 -166 1025 -57 ct 1025 -41 1026 -30 1028 -25 ct
|
||||
1030 -21 1034 -17 1038 -14 ct 1043 -11 1051 -10 1062 -10 ct 1062 -10 1062 -10 1062 0 ct
|
||||
1062 0 1062 0 938 0 ct 938 0 938 0 938 -10 ct 938 -10 938 -10 943 -10 ct 954 -10 963 -12 969 -16 ct
|
||||
973 -19 976 -24 978 -30 ct 979 -33 979 -42 979 -57 ct 979 -57 979 -57 979 -166 ct
|
||||
979 -186 977 -201 972 -209 ct 964 -221 953 -227 937 -227 ct 928 -227 918 -225 908 -220 ct
|
||||
898 -215 886 -206 873 -193 ct 873 -193 873 -193 872 -189 ct 872 -189 872 -189 873 -178 ct
|
||||
873 -178 873 -178 873 -57 ct 873 -40 874 -29 876 -25 ct 878 -21 881 -17 887 -14 ct
|
||||
892 -11 901 -10 914 -10 ct 914 -10 914 -10 914 0 ct 914 0 914 0 786 0 ct 786 0 786 0 786 -10 ct
|
||||
800 -10 810 -12 815 -15 ct 820 -18 824 -23 826 -30 ct 827 -33 827 -42 827 -57 ct
|
||||
827 -57 827 -57 827 -166 ct 827 -186 824 -201 818 -210 ct 810 -221 799 -227 784 -227 ct
|
||||
774 -227 765 -224 755 -219 ct 740 -211 728 -202 720 -193 ct 720 -193 720 -193 720 -57 ct
|
||||
720 -41 721 -30 723 -25 ct 726 -20 729 -16 734 -14 ct 738 -11 747 -10 761 -10 ct
|
||||
761 -10 761 -10 761 0 ct 761 0 761 0 637 0 ct 637 0 637 0 637 -10 ct 648 -10 656 -11 660 -14 ct
|
||||
665 -16 668 -20 671 -26 ct 673 -31 674 -41 674 -57 ct 674 -57 674 -57 674 -154 ct
|
||||
674 -182 673 -199 672 -207 ct 670 -213 668 -217 666 -220 ct 663 -222 659 -223 654 -223 ct
|
||||
649 -223 643 -222 636 -219 ct 636 -219 636 -219 632 -229 ct 632 -229 632 -229 708 -260 ct
|
||||
708 -260 708 -260 720 -260 ct 720 -260 720 -260 720 -206 ct p ef
|
||||
1114 -158 m 1114 -121 1123 -92 1141 -71 ct 1159 -50 1180 -39 1205 -39 ct 1221 -39 1236 -43 1248 -52 ct
|
||||
1260 -61 1270 -77 1278 -99 ct 1278 -99 1278 -99 1287 -94 ct 1283 -68 1272 -45 1253 -24 ct
|
||||
1235 -3 1212 7 1184 7 ct 1154 7 1128 -5 1106 -28 ct 1085 -52 1074 -83 1074 -123 ct
|
||||
1074 -166 1085 -200 1107 -224 ct 1129 -248 1157 -260 1190 -260 ct 1218 -260 1242 -251 1260 -232 ct
|
||||
1278 -214 1287 -189 1287 -158 ct 1287 -158 1287 -158 1114 -158 ct p
|
||||
1114 -174 m 1114 -174 1114 -174 1230 -174 ct 1229 -190 1227 -201 1224 -208 ct
|
||||
1220 -218 1213 -226 1204 -231 ct 1195 -237 1185 -240 1176 -240 ct 1160 -240 1147 -234 1135 -223 ct
|
||||
1123 -211 1116 -195 1114 -174 ct p ef
|
||||
pom
|
||||
gr
|
||||
gr
|
||||
3100 6250 m 2538 6438 l 2538 6063 l 3100 6250 l p ef
|
||||
1975 4500 m 1975 6250 l 1950 6250 l 1925 6250 l 1925 4500 l 1950 4500 l
|
||||
1975 4500 l p ef
|
||||
1950 6250 m 1950 6275 l 1946 6275 l 1941 6273 l 1938 6272 l 1934 6269 l
|
||||
1931 6266 l 1928 6263 l 1927 6259 l 1925 6254 l 1925 6250 l 1925 6250 l
|
||||
1950 6250 l p ef
|
||||
1950 6225 m 2650 6225 l 2650 6250 l 2650 6275 l 1950 6275 l 1950 6250 l
|
||||
1950 6225 l p ef
|
||||
gs
|
||||
4635 7681 m 6248 7681 l 6248 9206 l 4635 9206 l 4635 7681 l eoclip newpath
|
||||
gs
|
||||
tm setmatrix
|
||||
3942 4683 t
|
||||
1 1 s
|
||||
gs
|
||||
gs
|
||||
0 0 m 1613 0 l 1613 1525 l 0 1525 l 0 0 l eoclip newpath
|
||||
gs
|
||||
pum
|
||||
661 556 t
|
||||
74 -379 m 74 -379 74 -379 176 -429 ct 176 -429 176 -429 186 -429 ct 186 -429 186 -429 186 -74 ct
|
||||
186 -50 187 -36 189 -30 ct 191 -24 195 -19 201 -16 ct 207 -13 220 -11 239 -11 ct
|
||||
239 -11 239 -11 239 0 ct 239 0 239 0 82 0 ct 82 0 82 0 82 -11 ct 101 -11 114 -13 120 -16 ct
|
||||
125 -19 129 -23 132 -28 ct 134 -33 135 -49 135 -74 ct 135 -74 135 -74 135 -301 ct
|
||||
135 -331 134 -351 132 -359 ct 130 -366 128 -371 124 -374 ct 120 -377 116 -379 110 -379 ct
|
||||
103 -379 92 -375 79 -369 ct 79 -369 79 -369 74 -379 ct p ef
|
||||
pom
|
||||
gr
|
||||
gs
|
||||
132 741 m 1350 0 rl 0 31 rl 1350 neg 0 rl ef p ef
|
||||
|
||||
gr
|
||||
gs
|
||||
pum
|
||||
238 1376 t
|
||||
328 -430 m 328 -430 328 -430 296 -80 ct 294 -64 294 -53 294 -48 ct 294 -40 295 -33 298 -29 ct
|
||||
302 -23 307 -18 314 -15 ct 321 -12 332 -11 348 -11 ct 348 -11 348 -11 345 0 ct
|
||||
345 0 345 0 180 0 ct 180 0 180 0 184 -11 ct 184 -11 184 -11 191 -11 ct 204 -11 215 -14 224 -20 ct
|
||||
230 -24 234 -30 238 -39 ct 240 -46 242 -61 244 -85 ct 244 -85 244 -85 249 -138 ct
|
||||
249 -138 249 -138 128 -138 ct 128 -138 128 -138 86 -80 ct 76 -67 70 -57 67 -52 ct
|
||||
65 -46 64 -41 64 -36 ct 64 -29 66 -24 72 -19 ct 77 -14 86 -11 98 -11 ct 98 -11 98 -11 95 0 ct
|
||||
95 0 95 0 -30 0 ct -30 0 -30 0 -27 -11 ct -12 -12 2 -17 14 -26 ct 25 -36 43 -57 66 -88 ct
|
||||
66 -88 66 -88 317 -430 ct 317 -430 317 -430 328 -430 ct p
|
||||
268 -327 m 144 -159 l 251 -159 l 268 -327 l p ef
|
||||
pom
|
||||
gr
|
||||
gs
|
||||
pum
|
||||
661 1376 t
|
||||
168 131 m 127 98 96 50 75 -12 ct 56 -66 47 -123 47 -183 ct 47 -241 56 -298 75 -354 ct
|
||||
98 -419 128 -467 168 -497 ct 168 -497 168 -497 168 -481 ct 139 -454 116 -408 101 -342 ct
|
||||
89 -290 83 -237 83 -183 ct 83 -129 89 -76 101 -24 ct 116 43 139 89 168 116 ct 168 116 168 116 168 131 ct
|
||||
p ef
|
||||
pom
|
||||
gr
|
||||
gs
|
||||
pum
|
||||
953 1376 t
|
||||
54 -273 m 54 -273 54 -273 249 -273 ct 249 -273 249 -273 249 -265 ct 249 -265 249 -265 35 -42 ct
|
||||
35 -42 35 -42 125 -42 ct 147 -42 161 -43 166 -44 ct 172 -46 178 -50 183 -55 ct
|
||||
187 -60 193 -70 199 -84 ct 199 -84 199 -84 210 -84 ct 210 -84 210 -84 183 0 ct
|
||||
183 0 183 0 -18 0 ct -18 0 -18 0 -18 -9 ct -18 -9 -18 -9 196 -232 ct 196 -232 196 -232 109 -232 ct
|
||||
90 -232 78 -232 74 -231 ct 68 -229 63 -226 57 -221 ct 51 -216 45 -208 39 -196 ct
|
||||
39 -196 39 -196 28 -196 ct 28 -196 28 -196 54 -273 ct p ef
|
||||
pom
|
||||
gr
|
||||
gs
|
||||
pum
|
||||
1270 1376 t
|
||||
33 116 m 61 90 82 46 97 -18 ct 110 -70 117 -120 117 -170 ct 117 -229 111 -284 100 -335 ct
|
||||
86 -404 63 -453 33 -481 ct 33 -481 33 -481 33 -497 ct 72 -468 103 -421 125 -354 ct
|
||||
143 -299 153 -241 153 -183 ct 153 -123 144 -66 125 -11 ct 103 54 72 102 33 131 ct
|
||||
33 131 33 131 33 116 ct p ef
|
||||
pom
|
||||
gr
|
||||
gr
|
||||
gr
|
||||
gr
|
||||
gr
|
||||
5400 9300 m 4400 9300 l 4400 7500 l 6400 7500 l 6400 9300 l 5400 9300 l
|
||||
pc
|
||||
7700 7000 m 6800 7000 l 6800 5500 l 8600 5500 l 8600 7000 l 7700 7000 l
|
||||
pc
|
||||
gs
|
||||
gs
|
||||
pum
|
||||
7102 6460 t
|
||||
47 0 m 47 -455 l 107 -455 l 107 -54 l 330 -54 l 330 0 l 47 0 l p ef
|
||||
380 -146 m 380 -146 380 -146 437 -151 ct 440 -128 446 -110 456 -95 ct 465 -80 481 -69 501 -60 ct
|
||||
522 -51 545 -46 571 -46 ct 593 -46 614 -49 631 -56 ct 649 -63 662 -72 670 -84 ct
|
||||
679 -96 683 -109 683 -123 ct 683 -138 679 -150 670 -161 ct 662 -171 648 -180 629 -187 ct
|
||||
617 -192 590 -200 549 -210 ct 507 -220 478 -229 461 -238 ct 440 -249 424 -264 413 -280 ct
|
||||
402 -297 397 -316 397 -337 ct 397 -360 404 -382 416 -402 ct 429 -422 448 -437 473 -447 ct
|
||||
498 -458 526 -463 557 -463 ct 590 -463 620 -458 646 -447 ct 671 -436 691 -420 705 -399 ct
|
||||
719 -378 726 -354 727 -327 ct 727 -327 727 -327 669 -323 ct 666 -351 656 -373 638 -387 ct
|
||||
620 -402 594 -409 559 -409 ct 523 -409 496 -402 480 -389 ct 463 -376 455 -360 455 -341 ct
|
||||
455 -324 461 -311 473 -300 ct 484 -290 514 -279 563 -268 ct 611 -257 645 -247 663 -239 ct
|
||||
690 -227 709 -211 722 -193 ct 735 -174 741 -153 741 -128 ct 741 -104 734 -81 720 -60 ct
|
||||
706 -38 687 -22 661 -10 ct 635 2 606 8 573 8 ct 532 8 498 2 470 -10 ct 442 -22 421 -40 405 -64 ct
|
||||
389 -88 381 -116 380 -146 ct p ef
|
||||
824 0 m 824 0 824 0 824 -455 ct 824 -455 824 -455 995 -455 ct 1026 -455 1049 -454 1065 -451 ct
|
||||
1087 -447 1106 -440 1121 -429 ct 1136 -419 1148 -404 1157 -385 ct 1166 -367 1171 -346 1171 -323 ct
|
||||
1171 -285 1159 -252 1134 -225 ct 1109 -198 1065 -185 1001 -185 ct 1001 -185 1001 -185 884 -185 ct
|
||||
884 -185 884 -185 884 0 ct 884 0 884 0 824 0 ct p
|
||||
884 -239 m 884 -239 884 -239 1002 -239 ct 1041 -239 1068 -246 1084 -261 ct
|
||||
1101 -275 1109 -295 1109 -322 ct 1109 -341 1104 -357 1095 -370 ct 1085 -384 1072 -393 1057 -397 ct
|
||||
1046 -400 1028 -401 1000 -401 ct 1000 -401 1000 -401 884 -401 ct 884 -401 884 -401 884 -239 ct
|
||||
p ef
|
||||
pom
|
||||
gr
|
||||
gr
|
||||
6800 6250 m 6238 6438 l 6238 6063 l 6800 6250 l p ef
|
||||
4700 6225 m 6350 6225 l 6350 6275 l 4700 6275 l 4700 6225 l p ef
|
||||
4400 8400 m 3988 8538 l 3988 8263 l 4400 8400 l p ef
|
||||
4070 8425 m 1950 8425 l 1950 8400 l 1950 8375 l 4070 8375 l 4070 8400 l
|
||||
4070 8425 l p ef
|
||||
1950 8400 m 1950 8425 l 1946 8425 l 1941 8423 l 1938 8422 l 1934 8419 l
|
||||
1931 8416 l 1928 8413 l 1927 8409 l 1925 8404 l 1925 8400 l 1925 8400 l
|
||||
1950 8400 l p ef
|
||||
1925 8400 m 1925 4500 l 1950 4500 l 1975 4500 l 1975 8400 l 1950 8400 l
|
||||
1925 8400 l p ef
|
||||
1950 4500 m 1950 4500 l 1950 4500 l 1950 4500 l 1950 4500 l 1950 4500 l
|
||||
1950 4500 l p ef
|
||||
5400 7500 m 5213 6938 l 5588 6938 l 5400 7500 l p ef
|
||||
4700 6225 m 5400 6225 l 5400 6250 l 5400 6275 l 4700 6275 l 4700 6250 l
|
||||
4700 6225 l p ef
|
||||
5400 6250 m 5400 6225 l 5404 6225 l 5409 6227 l 5412 6228 l 5416 6231 l
|
||||
5419 6234 l 5422 6237 l 5423 6241 l 5425 6246 l 5425 6250 l 5425 6250 l
|
||||
5400 6250 l p ef
|
||||
5425 6250 m 5425 7050 l 5400 7050 l 5375 7050 l 5375 6250 l 5400 6250 l
|
||||
5425 6250 l p ef
|
||||
10600 7000 m 9700 7000 l 9700 5500 l 11500 5500 l 11500 7000 l 10600 7000 l
|
||||
pc
|
||||
gs
|
||||
gs
|
||||
pum
|
||||
10153 6460 t
|
||||
178 0 m 178 0 178 0 2 -455 ct 2 -455 2 -455 67 -455 ct 67 -455 67 -455 186 -124 ct
|
||||
195 -98 203 -73 210 -50 ct 217 -74 225 -99 234 -124 ct 234 -124 234 -124 357 -455 ct
|
||||
357 -455 357 -455 419 -455 ct 419 -455 419 -455 241 0 ct 241 0 241 0 178 0 ct p ef
|
||||
817 -48 m 845 -29 870 -15 894 -6 ct 894 -6 894 -6 876 36 ct 843 24 811 5 778 -21 ct
|
||||
745 -2 707 8 667 8 ct 625 8 588 -2 555 -22 ct 521 -42 495 -70 477 -106 ct 459 -142 450 -182 450 -227 ct
|
||||
450 -272 459 -313 477 -350 ct 496 -387 521 -415 555 -434 ct 589 -453 626 -463 668 -463 ct
|
||||
710 -463 748 -453 781 -433 ct 815 -413 841 -385 858 -349 ct 876 -313 885 -273 885 -227 ct
|
||||
885 -190 879 -156 868 -126 ct 857 -96 839 -70 817 -48 ct p
|
||||
684 -125 m 719 -115 747 -101 770 -82 ct 805 -114 823 -162 823 -227 ct 823 -264 817 -296 804 -324 ct
|
||||
792 -352 773 -373 749 -388 ct 725 -403 698 -411 668 -411 ct 623 -411 586 -396 556 -365 ct
|
||||
527 -334 512 -288 512 -227 ct 512 -168 527 -122 556 -91 ct 585 -59 623 -43 668 -43 ct
|
||||
690 -43 710 -47 729 -55 ct 710 -67 690 -76 669 -81 ct 669 -81 669 -81 684 -125 ct
|
||||
p ef
|
||||
pom
|
||||
gr
|
||||
gr
|
||||
9700 6250 m 9138 6438 l 9138 6063 l 9700 6250 l p ef
|
||||
8600 6225 m 9250 6225 l 9250 6275 l 8600 6275 l 8600 6225 l p ef
|
||||
gs
|
||||
8135 7931 m 9830 7931 l 9830 8806 l 8135 8806 l 8135 7931 l eoclip newpath
|
||||
gs
|
||||
tm setmatrix
|
||||
7435 4921 t
|
||||
1 1 s
|
||||
gs
|
||||
gs
|
||||
0 0 m 1695 0 l 1695 875 l 0 875 l 0 0 l eoclip newpath
|
||||
gs
|
||||
pum
|
||||
106 741 t
|
||||
650 93 m 650 93 650 93 56 93 ct 56 93 56 93 56 76 ct 56 76 56 76 359 -301 ct 359 -301 359 -301 56 -670 ct
|
||||
56 -670 56 -670 56 -687 ct 56 -687 56 -687 634 -687 ct 634 -687 634 -687 646 -534 ct
|
||||
646 -534 646 -534 627 -534 ct 620 -611 582 -650 516 -650 ct 516 -650 516 -650 181 -650 ct
|
||||
181 -650 181 -650 435 -339 ct 435 -339 435 -339 150 13 ct 150 13 150 13 520 13 ct
|
||||
595 13 642 -24 661 -98 ct 661 -98 661 -98 679 -96 ct 679 -96 679 -96 650 93 ct
|
||||
p ef
|
||||
pom
|
||||
gr
|
||||
gs
|
||||
pum
|
||||
953 661 t
|
||||
168 131 m 127 98 96 50 75 -12 ct 56 -66 47 -123 47 -183 ct 47 -241 56 -298 75 -354 ct
|
||||
98 -419 128 -467 168 -497 ct 168 -497 168 -497 168 -481 ct 139 -454 116 -408 101 -342 ct
|
||||
89 -290 83 -237 83 -183 ct 83 -129 89 -76 101 -24 ct 116 43 139 89 168 116 ct 168 116 168 116 168 131 ct
|
||||
p ef
|
||||
pom
|
||||
gr
|
||||
gs
|
||||
pum
|
||||
1217 661 t
|
||||
33 116 m 61 90 82 46 97 -18 ct 110 -70 117 -120 117 -170 ct 117 -229 111 -284 100 -335 ct
|
||||
86 -404 63 -453 33 -481 ct 33 -481 33 -481 33 -497 ct 72 -468 103 -421 125 -354 ct
|
||||
143 -299 153 -241 153 -183 ct 153 -123 144 -66 125 -11 ct 103 54 72 102 33 131 ct
|
||||
33 131 33 131 33 116 ct p ef
|
||||
pom
|
||||
gr
|
||||
gs
|
||||
pum
|
||||
1402 344 t
|
||||
175 -48 m 175 -48 175 -48 157 0 ct 157 0 157 0 8 0 ct 8 0 8 0 8 -7 ct 52 -47 83 -79 101 -105 ct
|
||||
119 -130 128 -153 128 -174 ct 128 -190 123 -204 113 -214 ct 103 -225 91 -230 78 -230 ct
|
||||
65 -230 54 -226 44 -219 ct 34 -212 27 -202 22 -188 ct 22 -188 22 -188 15 -188 ct
|
||||
18 -211 26 -228 39 -240 ct 52 -252 68 -258 88 -258 ct 108 -258 125 -251 139 -238 ct
|
||||
153 -225 160 -209 160 -191 ct 160 -179 157 -166 151 -153 ct 142 -133 127 -112 106 -89 ct
|
||||
75 -55 55 -35 48 -28 ct 48 -28 48 -28 114 -28 ct 127 -28 137 -29 142 -29 ct 147 -30 152 -32 157 -36 ct
|
||||
161 -39 165 -43 168 -48 ct 168 -48 168 -48 175 -48 ct p ef
|
||||
pom
|
||||
gr
|
||||
gr
|
||||
gr
|
||||
gr
|
||||
gr
|
||||
8950 9100 m 7900 9100 l 7900 7700 l 10000 7700 l 10000 9100 l 8950 9100 l
|
||||
pc
|
||||
7900 8400 m 7338 8588 l 7338 8213 l 7900 8400 l p ef
|
||||
6400 8375 m 7450 8375 l 7450 8425 l 6400 8425 l 6400 8375 l p ef
|
||||
13350 9100 m 12300 9100 l 12300 7700 l 14400 7700 l 14400 9100 l 13350 9100 l
|
||||
pc
|
||||
gs
|
||||
gs
|
||||
pum
|
||||
12395 8584 t
|
||||
242 -260 m 242 -260 242 -260 242 64 ct 242 81 243 91 245 96 ct 248 101 251 104 256 107 ct
|
||||
260 110 269 111 283 111 ct 283 111 283 111 283 121 ct 283 121 283 121 156 121 ct
|
||||
156 121 156 121 156 111 ct 156 111 156 111 161 111 ct 172 111 179 109 185 106 ct
|
||||
189 104 191 101 194 95 ct 196 90 197 79 197 64 ct 197 64 197 64 197 -45 ct 180 -25 166 -11 153 -4 ct
|
||||
141 3 128 7 114 7 ct 90 7 68 -4 49 -26 ct 30 -48 20 -78 20 -115 ct 20 -158 33 -193 58 -220 ct
|
||||
83 -247 114 -260 149 -260 ct 160 -260 170 -259 178 -256 ct 187 -253 195 -248 202 -243 ct
|
||||
213 -248 223 -253 233 -260 ct 233 -260 233 -260 242 -260 ct p
|
||||
197 -62 m 197 -62 197 -62 197 -180 ct 197 -194 195 -205 192 -213 ct 188 -221 182 -227 172 -233 ct
|
||||
163 -238 153 -241 141 -241 ct 121 -241 103 -232 88 -215 ct 73 -197 66 -171 66 -136 ct
|
||||
66 -102 74 -76 89 -58 ct 104 -41 122 -32 143 -32 ct 154 -32 163 -34 172 -39 ct
|
||||
181 -44 189 -51 197 -62 ct p ef
|
||||
523 -253 m 523 -253 523 -253 523 -99 ct 523 -70 524 -53 525 -47 ct 526 -40 529 -36 532 -33 ct
|
||||
535 -31 538 -29 542 -29 ct 548 -29 554 -31 561 -34 ct 561 -34 561 -34 565 -24 ct
|
||||
565 -24 565 -24 490 7 ct 490 7 490 7 478 7 ct 478 7 478 7 478 -46 ct 456 -23 440 -8 428 -2 ct
|
||||
417 4 405 7 392 7 ct 378 7 365 3 355 -5 ct 344 -14 337 -24 333 -37 ct 329 -50 327 -68 327 -92 ct
|
||||
327 -92 327 -92 327 -205 ct 327 -217 326 -225 323 -229 ct 321 -234 317 -237 312 -240 ct
|
||||
307 -242 297 -243 284 -243 ct 284 -243 284 -243 284 -253 ct 284 -253 284 -253 373 -253 ct
|
||||
373 -253 373 -253 373 -84 ct 373 -60 377 -44 385 -37 ct 394 -30 403 -26 415 -26 ct
|
||||
423 -26 432 -28 442 -33 ct 452 -38 464 -48 478 -62 ct 478 -62 478 -62 478 -205 ct
|
||||
478 -220 475 -230 470 -235 ct 465 -240 454 -243 437 -243 ct 437 -243 437 -243 437 -253 ct
|
||||
437 -253 437 -253 523 -253 ct p ef
|
||||
728 -37 m 702 -17 686 -5 679 -2 ct 669 3 659 5 647 5 ct 630 5 615 -1 604 -13 ct
|
||||
593 -25 587 -40 587 -60 ct 587 -72 590 -83 595 -92 ct 603 -104 616 -116 635 -127 ct
|
||||
653 -138 685 -151 728 -167 ct 728 -167 728 -167 728 -177 ct 728 -202 724 -219 716 -228 ct
|
||||
708 -237 697 -242 681 -242 ct 670 -242 661 -239 654 -233 ct 647 -226 643 -219 643 -211 ct
|
||||
643 -211 643 -211 644 -195 ct 644 -187 642 -180 637 -176 ct 633 -171 627 -169 620 -169 ct
|
||||
614 -169 608 -171 604 -176 ct 599 -181 597 -188 597 -196 ct 597 -212 605 -227 621 -240 ct
|
||||
637 -253 660 -260 689 -260 ct 711 -260 730 -256 744 -249 ct 755 -243 763 -234 768 -222 ct
|
||||
771 -214 773 -198 773 -174 ct 773 -174 773 -174 773 -89 ct 773 -65 773 -50 774 -45 ct
|
||||
775 -39 777 -36 779 -34 ct 781 -32 783 -31 786 -31 ct 789 -31 792 -32 794 -33 ct
|
||||
798 -35 805 -42 816 -53 ct 816 -53 816 -53 816 -38 ct 796 -10 776 4 758 4 ct 749 4 741 1 736 -5 ct
|
||||
731 -11 728 -22 728 -37 ct p
|
||||
728 -54 m 728 -54 728 -54 728 -149 ct 700 -138 682 -130 674 -126 ct 659 -118 649 -110 642 -101 ct
|
||||
636 -92 633 -83 633 -72 ct 633 -59 637 -49 645 -40 ct 653 -31 662 -27 672 -27 ct
|
||||
687 -27 705 -36 728 -54 ct p ef
|
||||
909 -207 m 938 -242 966 -260 993 -260 ct 1007 -260 1019 -257 1028 -250 ct 1038 -243 1046 -231 1052 -216 ct
|
||||
1056 -205 1058 -188 1058 -165 ct 1058 -165 1058 -165 1058 -57 ct 1058 -41 1059 -30 1062 -25 ct
|
||||
1064 -20 1067 -16 1071 -14 ct 1075 -11 1083 -10 1095 -10 ct 1095 -10 1095 -10 1095 0 ct
|
||||
1095 0 1095 0 971 0 ct 971 0 971 0 971 -10 ct 971 -10 971 -10 976 -10 ct 988 -10 996 -12 1001 -15 ct
|
||||
1006 -19 1009 -24 1011 -31 ct 1012 -34 1012 -43 1012 -57 ct 1012 -57 1012 -57 1012 -161 ct
|
||||
1012 -184 1009 -201 1003 -211 ct 997 -222 987 -227 973 -227 ct 952 -227 930 -215 909 -191 ct
|
||||
909 -191 909 -191 909 -57 ct 909 -40 910 -29 912 -25 ct 915 -20 918 -16 923 -14 ct
|
||||
927 -11 936 -10 950 -10 ct 950 -10 950 -10 950 0 ct 950 0 950 0 826 0 ct 826 0 826 0 826 -10 ct
|
||||
826 -10 826 -10 831 -10 ct 844 -10 852 -13 856 -20 ct 861 -26 863 -39 863 -57 ct
|
||||
863 -57 863 -57 863 -151 ct 863 -181 862 -200 861 -206 ct 860 -213 858 -217 855 -220 ct
|
||||
852 -222 848 -223 843 -223 ct 838 -223 832 -222 825 -219 ct 825 -219 825 -219 821 -229 ct
|
||||
821 -229 821 -229 897 -260 ct 897 -260 897 -260 909 -260 ct 909 -260 909 -260 909 -207 ct
|
||||
p ef
|
||||
1192 -337 m 1192 -337 1192 -337 1192 -253 ct 1192 -253 1192 -253 1251 -253 ct
|
||||
1251 -253 1251 -253 1251 -234 ct 1251 -234 1251 -234 1192 -234 ct 1192 -234 1192 -234 1192 -70 ct
|
||||
1192 -53 1194 -42 1199 -37 ct 1204 -31 1210 -28 1217 -28 ct 1223 -28 1229 -30 1235 -34 ct
|
||||
1240 -37 1245 -43 1248 -50 ct 1248 -50 1248 -50 1259 -50 ct 1253 -32 1243 -19 1232 -10 ct
|
||||
1220 -1 1207 4 1195 4 ct 1186 4 1178 2 1170 -3 ct 1162 -8 1156 -14 1152 -23 ct
|
||||
1148 -32 1146 -45 1146 -64 ct 1146 -64 1146 -64 1146 -234 ct 1146 -234 1146 -234 1106 -234 ct
|
||||
1106 -234 1106 -234 1106 -243 ct 1116 -247 1126 -254 1137 -264 ct 1148 -273 1157 -285 1165 -298 ct
|
||||
1170 -305 1175 -318 1183 -337 ct 1183 -337 1183 -337 1192 -337 ct p ef
|
||||
1339 -392 m 1347 -392 1353 -389 1359 -384 ct 1364 -378 1367 -372 1367 -364 ct
|
||||
1367 -356 1364 -350 1359 -344 ct 1353 -339 1347 -336 1339 -336 ct 1331 -336 1325 -339 1319 -344 ct
|
||||
1314 -350 1311 -356 1311 -364 ct 1311 -372 1314 -378 1319 -384 ct 1325 -389 1331 -392 1339 -392 ct
|
||||
p
|
||||
1362 -260 m 1362 -260 1362 -260 1362 -57 ct 1362 -41 1363 -31 1365 -26 ct 1368 -20 1371 -16 1375 -14 ct
|
||||
1380 -11 1387 -10 1399 -10 ct 1399 -10 1399 -10 1399 0 ct 1399 0 1399 0 1279 0 ct
|
||||
1279 0 1279 0 1279 -10 ct 1291 -10 1299 -11 1303 -14 ct 1307 -16 1310 -20 1312 -25 ct
|
||||
1315 -31 1316 -41 1316 -57 ct 1316 -57 1316 -57 1316 -154 ct 1316 -181 1315 -199 1314 -207 ct
|
||||
1312 -213 1310 -217 1308 -220 ct 1305 -222 1301 -223 1296 -223 ct 1291 -223 1285 -222 1278 -219 ct
|
||||
1278 -219 1278 -219 1274 -229 ct 1274 -229 1274 -229 1350 -260 ct 1350 -260 1350 -260 1362 -260 ct
|
||||
p ef
|
||||
1651 -77 m 1651 -77 1651 -77 1648 0 ct 1648 0 1648 0 1425 0 ct 1425 0 1425 0 1425 -10 ct
|
||||
1425 -10 1425 -10 1594 -234 ct 1594 -234 1594 -234 1509 -234 ct 1491 -234 1480 -233 1474 -231 ct
|
||||
1469 -228 1464 -224 1461 -217 ct 1456 -208 1453 -197 1452 -183 ct 1452 -183 1452 -183 1442 -183 ct
|
||||
1442 -183 1442 -183 1443 -253 ct 1443 -253 1443 -253 1655 -253 ct 1655 -253 1655 -253 1655 -243 ct
|
||||
1655 -243 1655 -243 1486 -18 ct 1486 -18 1486 -18 1578 -18 ct 1597 -18 1610 -20 1617 -23 ct
|
||||
1624 -26 1629 -32 1634 -40 ct 1637 -46 1639 -58 1641 -77 ct 1641 -77 1641 -77 1651 -77 ct
|
||||
p ef
|
||||
1724 -158 m 1724 -121 1733 -92 1751 -71 ct 1769 -50 1790 -39 1815 -39 ct 1831 -39 1846 -43 1858 -52 ct
|
||||
1870 -61 1880 -77 1888 -99 ct 1888 -99 1888 -99 1897 -94 ct 1893 -68 1882 -45 1863 -24 ct
|
||||
1845 -3 1822 7 1794 7 ct 1764 7 1738 -5 1716 -28 ct 1695 -52 1684 -83 1684 -123 ct
|
||||
1684 -166 1695 -200 1717 -224 ct 1739 -248 1767 -260 1800 -260 ct 1828 -260 1852 -251 1870 -232 ct
|
||||
1888 -214 1897 -189 1897 -158 ct 1897 -158 1897 -158 1724 -158 ct p
|
||||
1724 -174 m 1724 -174 1724 -174 1840 -174 ct 1839 -190 1837 -201 1834 -208 ct
|
||||
1830 -218 1823 -226 1814 -231 ct 1805 -237 1795 -240 1786 -240 ct 1770 -240 1757 -234 1745 -223 ct
|
||||
1733 -211 1726 -195 1724 -174 ct p ef
|
||||
pom
|
||||
gr
|
||||
gr
|
||||
12300 8400 m 11738 8588 l 11738 8213 l 12300 8400 l p ef
|
||||
10000 8375 m 11850 8375 l 11850 8425 l 10000 8425 l 10000 8375 l p ef
|
||||
gs
|
||||
10100 7500 m 11689 7500 l 11689 8295 l 10100 8295 l 10100 7500 l eoclip newpath
|
||||
gs
|
||||
tm setmatrix
|
||||
9393 4498 t
|
||||
1 1 s
|
||||
gs
|
||||
gs
|
||||
0 0 m 1589 0 l 1589 795 l 0 795 l 0 0 l eoclip newpath
|
||||
gs
|
||||
pum
|
||||
159 556 t
|
||||
331 -261 m 331 -261 331 -261 322 -229 ct 322 -229 322 -229 270 -229 ct 274 -218 276 -207 276 -198 ct
|
||||
276 -170 264 -146 241 -124 ct 217 -103 185 -91 144 -89 ct 122 -82 106 -75 95 -65 ct
|
||||
91 -62 89 -59 89 -55 ct 89 -51 91 -47 95 -44 ct 98 -40 108 -37 123 -33 ct 123 -33 123 -33 183 -20 ct
|
||||
216 -12 238 -3 248 8 ct 259 19 264 31 264 46 ct 264 63 258 78 245 92 ct 233 106 215 117 190 125 ct
|
||||
166 133 140 137 111 137 ct 85 137 62 134 41 128 ct 20 122 5 114 -4 103 ct -13 93 -18 82 -18 71 ct
|
||||
-18 63 -15 53 -9 44 ct -3 34 4 26 13 20 ct 19 16 35 7 61 -8 ct 52 -15 47 -23 47 -32 ct
|
||||
47 -40 51 -49 59 -58 ct 67 -68 85 -78 111 -89 ct 89 -93 71 -103 58 -118 ct 45 -132 39 -149 39 -167 ct
|
||||
39 -196 52 -222 78 -245 ct 104 -268 138 -280 181 -280 ct 196 -280 209 -278 219 -275 ct
|
||||
229 -272 239 -268 248 -261 ct 248 -261 248 -261 331 -261 ct p
|
||||
225 -211 m 225 -228 220 -240 211 -250 ct 201 -259 189 -264 173 -264 ct 149 -264 129 -252 114 -229 ct
|
||||
98 -206 90 -182 90 -157 ct 90 -141 95 -128 105 -118 ct 115 -108 127 -103 142 -103 ct
|
||||
153 -103 164 -106 174 -112 ct 185 -118 194 -126 201 -136 ct 209 -147 214 -160 219 -176 ct
|
||||
223 -192 225 -204 225 -211 ct p
|
||||
74 0 m 57 8 45 18 36 30 ct 27 42 23 53 23 65 ct 23 79 29 90 42 99 ct 59 112 85 118 120 118 ct
|
||||
149 118 175 113 196 103 ct 217 93 227 80 227 64 ct 227 56 223 48 215 41 ct 208 34 193 28 170 24 ct
|
||||
158 21 126 13 74 0 ct p ef
|
||||
pom
|
||||
gr
|
||||
gs
|
||||
pum
|
||||
609 714 t
|
||||
119 -164 m 119 -164 119 -164 116 -150 ct 116 -150 116 -150 88 -150 ct 88 -150 88 -150 65 -69 ct
|
||||
55 -34 45 -6 36 13 ct 23 41 9 60 -6 70 ct -18 78 -29 82 -41 82 ct -49 82 -55 80 -60 75 ct
|
||||
-64 72 -66 68 -66 63 ct -66 59 -64 55 -61 52 ct -58 49 -54 48 -50 48 ct -46 48 -44 49 -41 51 ct
|
||||
-39 53 -38 56 -38 58 ct -38 61 -39 64 -41 66 ct -43 68 -44 69 -44 70 ct -44 71 -44 72 -43 73 ct
|
||||
-42 74 -40 74 -38 74 ct -32 74 -27 72 -21 69 ct -15 66 -10 61 -5 54 ct -1 48 3 38 8 26 ct
|
||||
9 21 14 4 22 -25 ct 22 -25 22 -25 59 -150 ct 59 -150 59 -150 22 -150 ct 22 -150 22 -150 25 -164 ct
|
||||
36 -164 44 -165 49 -166 ct 53 -168 57 -170 61 -174 ct 65 -178 70 -186 75 -197 ct
|
||||
82 -212 89 -224 95 -232 ct 104 -243 113 -251 123 -257 ct 132 -262 142 -265 150 -265 ct
|
||||
159 -265 166 -263 172 -258 ct 177 -253 180 -248 180 -242 ct 180 -238 179 -234 176 -231 ct
|
||||
173 -228 169 -227 165 -227 ct 161 -227 158 -228 156 -230 ct 153 -233 152 -235 152 -238 ct
|
||||
152 -240 153 -243 155 -245 ct 157 -248 158 -250 158 -251 ct 158 -253 157 -254 156 -255 ct
|
||||
155 -256 153 -257 150 -257 ct 143 -257 136 -254 130 -249 ct 122 -242 115 -232 109 -217 ct
|
||||
106 -210 100 -192 92 -164 ct 92 -164 92 -164 119 -164 ct p ef
|
||||
125 -158 m 125 -158 125 -158 189 -168 ct 189 -168 189 -168 163 -78 ct 185 -115 204 -141 222 -155 ct
|
||||
232 -164 240 -168 247 -168 ct 251 -168 254 -167 256 -164 ct 259 -162 260 -158 260 -154 ct
|
||||
260 -146 258 -138 254 -130 ct 251 -125 247 -122 241 -122 ct 238 -122 236 -123 234 -125 ct
|
||||
232 -127 230 -130 230 -134 ct 230 -136 229 -138 228 -138 ct 227 -139 226 -140 225 -140 ct
|
||||
223 -140 221 -140 219 -139 ct 216 -137 211 -132 204 -124 ct 194 -112 183 -96 171 -77 ct
|
||||
166 -68 161 -59 158 -49 ct 153 -35 150 -26 149 -23 ct 149 -23 149 -23 142 0 ct
|
||||
142 0 142 0 114 0 ct 114 0 114 0 147 -116 ct 151 -129 153 -139 153 -144 ct 153 -146 153 -148 151 -150 ct
|
||||
148 -152 145 -153 141 -153 ct 139 -153 134 -152 128 -151 ct 128 -151 128 -151 125 -158 ct
|
||||
p ef
|
||||
443 -166 m 443 -166 443 -166 406 -40 ct 406 -40 406 -40 402 -23 ct 402 -21 401 -20 401 -19 ct
|
||||
401 -17 402 -15 403 -14 ct 403 -13 404 -13 405 -13 ct 406 -13 408 -13 409 -15 ct
|
||||
413 -18 417 -26 423 -37 ct 423 -37 423 -37 429 -33 ct 422 -20 415 -11 407 -5 ct
|
||||
399 1 392 4 386 4 ct 382 4 378 3 376 0 ct 373 -3 372 -6 372 -11 ct 372 -17 373 -25 376 -35 ct
|
||||
376 -35 376 -35 380 -50 ct 362 -29 346 -14 331 -5 ct 320 1 309 4 299 4 ct 289 4 280 0 273 -7 ct
|
||||
266 -14 262 -25 262 -38 ct 262 -57 268 -77 281 -99 ct 294 -120 311 -138 331 -151 ct
|
||||
346 -161 361 -166 374 -166 ct 383 -166 390 -164 395 -160 ct 401 -157 405 -151 408 -142 ct
|
||||
408 -142 408 -142 413 -162 ct 413 -162 413 -162 443 -166 ct p
|
||||
373 -157 m 365 -157 356 -153 346 -146 ct 332 -136 320 -120 309 -100 ct 298 -80 293 -61 293 -45 ct
|
||||
293 -37 295 -30 300 -25 ct 305 -20 310 -18 317 -18 ct 332 -18 349 -28 367 -47 ct
|
||||
389 -73 399 -100 398 -128 ct 398 -138 396 -145 392 -150 ct 387 -155 381 -157 373 -157 ct
|
||||
p ef
|
||||
528 -168 m 528 -168 528 -168 504 -84 ct 515 -104 524 -119 532 -129 ct 544 -144 555 -155 567 -162 ct
|
||||
573 -166 580 -168 588 -168 ct 594 -168 599 -166 603 -162 ct 607 -158 609 -153 609 -147 ct
|
||||
609 -141 608 -133 605 -123 ct 605 -123 605 -123 591 -76 ct 612 -114 632 -140 652 -155 ct
|
||||
662 -164 673 -168 683 -168 ct 689 -168 694 -166 698 -162 ct 702 -158 704 -151 704 -143 ct
|
||||
704 -135 703 -128 700 -120 ct 700 -120 700 -120 677 -48 ct 672 -33 669 -24 669 -22 ct
|
||||
669 -21 670 -19 671 -18 ct 672 -17 673 -17 674 -17 ct 675 -17 677 -18 680 -20 ct
|
||||
686 -25 692 -33 698 -42 ct 698 -42 698 -42 704 -38 ct 701 -33 696 -26 688 -18 ct
|
||||
681 -9 674 -3 669 0 ct 663 3 658 4 654 4 ct 650 4 646 3 643 0 ct 641 -3 639 -7 639 -11 ct
|
||||
639 -17 642 -29 648 -47 ct 648 -47 648 -47 668 -106 ct 672 -120 674 -128 675 -129 ct
|
||||
675 -132 675 -134 675 -136 ct 675 -139 675 -142 673 -143 ct 671 -145 670 -146 668 -146 ct
|
||||
662 -146 656 -143 650 -138 ct 631 -122 613 -100 597 -72 ct 586 -53 576 -29 567 0 ct
|
||||
567 0 567 0 540 0 ct 540 0 540 0 574 -112 ct 578 -124 580 -132 580 -136 ct 580 -140 579 -142 577 -144 ct
|
||||
576 -145 574 -146 572 -146 ct 568 -146 564 -145 559 -142 ct 551 -137 542 -126 530 -111 ct
|
||||
518 -95 508 -80 502 -65 ct 499 -59 491 -37 479 0 ct 479 0 479 0 452 0 ct 452 0 452 0 487 -120 ct
|
||||
487 -120 487 -120 491 -136 ct 492 -138 493 -140 493 -141 ct 493 -144 491 -146 489 -148 ct
|
||||
486 -150 483 -151 479 -151 ct 478 -151 473 -150 466 -149 ct 466 -149 466 -149 464 -156 ct
|
||||
464 -156 464 -156 528 -168 ct p ef
|
||||
763 -70 m 762 -64 762 -59 762 -55 ct 762 -44 766 -35 774 -27 ct 782 -20 792 -16 803 -16 ct
|
||||
812 -16 821 -18 830 -21 ct 838 -25 851 -33 867 -45 ct 867 -45 867 -45 871 -40 ct
|
||||
841 -11 813 4 786 4 ct 768 4 754 -2 745 -13 ct 736 -24 731 -37 731 -51 ct 731 -69 737 -88 748 -107 ct
|
||||
760 -126 774 -141 792 -152 ct 809 -163 827 -168 845 -168 ct 858 -168 868 -165 874 -160 ct
|
||||
881 -155 884 -148 884 -141 ct 884 -131 880 -121 871 -112 ct 860 -99 844 -89 823 -82 ct
|
||||
809 -77 789 -73 763 -70 ct p
|
||||
764 -79 m 783 -81 799 -85 811 -90 ct 826 -97 838 -105 846 -114 ct 854 -124 858 -133 858 -141 ct
|
||||
858 -147 856 -151 853 -154 ct 850 -157 845 -159 838 -159 ct 825 -159 811 -152 797 -139 ct
|
||||
782 -125 771 -105 764 -79 ct p ef
|
||||
pom
|
||||
gr
|
||||
gr
|
||||
gr
|
||||
gr
|
||||
gr
|
||||
gs
|
||||
14601 7501 m 16190 7501 l 16190 8296 l 14601 8296 l 14601 7501 l eoclip newpath
|
||||
gs
|
||||
tm setmatrix
|
||||
13891 4498 t
|
||||
1 1 s
|
||||
gs
|
||||
gs
|
||||
0 0 m 1590 0 l 1590 795 l 0 795 l 0 0 l eoclip newpath
|
||||
gs
|
||||
pum
|
||||
212 556 t
|
||||
208 -345 m 197 -344 l 113 -410 l 25 -342 l 11 -345 l 113 -462 l 208 -345 l
|
||||
p ef
|
||||
pom
|
||||
gr
|
||||
gs
|
||||
pum
|
||||
159 556 t
|
||||
331 -261 m 331 -261 331 -261 322 -229 ct 322 -229 322 -229 270 -229 ct 274 -218 276 -207 276 -198 ct
|
||||
276 -170 264 -146 241 -124 ct 217 -103 185 -91 144 -89 ct 122 -82 106 -75 95 -65 ct
|
||||
91 -62 89 -59 89 -55 ct 89 -51 91 -47 95 -44 ct 98 -40 108 -37 123 -33 ct 123 -33 123 -33 183 -20 ct
|
||||
216 -12 238 -3 248 8 ct 259 19 264 31 264 46 ct 264 63 258 78 245 92 ct 233 106 215 117 190 125 ct
|
||||
166 133 140 137 111 137 ct 85 137 62 134 41 128 ct 20 122 5 114 -4 103 ct -13 93 -18 82 -18 71 ct
|
||||
-18 63 -15 53 -9 44 ct -3 34 4 26 13 20 ct 19 16 35 7 61 -8 ct 52 -15 47 -23 47 -32 ct
|
||||
47 -40 51 -49 59 -58 ct 67 -68 85 -78 111 -89 ct 89 -93 71 -103 58 -118 ct 45 -132 39 -149 39 -167 ct
|
||||
39 -196 52 -222 78 -245 ct 104 -268 138 -280 181 -280 ct 196 -280 209 -278 219 -275 ct
|
||||
229 -272 239 -268 248 -261 ct 248 -261 248 -261 331 -261 ct p
|
||||
225 -211 m 225 -228 220 -240 211 -250 ct 201 -259 189 -264 173 -264 ct 149 -264 129 -252 114 -229 ct
|
||||
98 -206 90 -182 90 -157 ct 90 -141 95 -128 105 -118 ct 115 -108 127 -103 142 -103 ct
|
||||
153 -103 164 -106 174 -112 ct 185 -118 194 -126 201 -136 ct 209 -147 214 -160 219 -176 ct
|
||||
223 -192 225 -204 225 -211 ct p
|
||||
74 0 m 57 8 45 18 36 30 ct 27 42 23 53 23 65 ct 23 79 29 90 42 99 ct 59 112 85 118 120 118 ct
|
||||
149 118 175 113 196 103 ct 217 93 227 80 227 64 ct 227 56 223 48 215 41 ct 208 34 193 28 170 24 ct
|
||||
158 21 126 13 74 0 ct p ef
|
||||
pom
|
||||
gr
|
||||
gs
|
||||
pum
|
||||
609 714 t
|
||||
119 -164 m 119 -164 119 -164 116 -150 ct 116 -150 116 -150 88 -150 ct 88 -150 88 -150 65 -69 ct
|
||||
55 -34 45 -6 36 13 ct 23 41 9 60 -6 70 ct -18 78 -29 82 -41 82 ct -49 82 -55 80 -60 75 ct
|
||||
-64 72 -66 68 -66 63 ct -66 59 -64 55 -61 52 ct -58 49 -54 48 -50 48 ct -46 48 -44 49 -41 51 ct
|
||||
-39 53 -38 56 -38 58 ct -38 61 -39 64 -41 66 ct -43 68 -44 69 -44 70 ct -44 71 -44 72 -43 73 ct
|
||||
-42 74 -40 74 -38 74 ct -32 74 -27 72 -21 69 ct -15 66 -10 61 -5 54 ct -1 48 3 38 8 26 ct
|
||||
9 21 14 4 22 -25 ct 22 -25 22 -25 59 -150 ct 59 -150 59 -150 22 -150 ct 22 -150 22 -150 25 -164 ct
|
||||
36 -164 44 -165 49 -166 ct 53 -168 57 -170 61 -174 ct 65 -178 70 -186 75 -197 ct
|
||||
82 -212 89 -224 95 -232 ct 104 -243 113 -251 123 -257 ct 132 -262 142 -265 150 -265 ct
|
||||
159 -265 166 -263 172 -258 ct 177 -253 180 -248 180 -242 ct 180 -238 179 -234 176 -231 ct
|
||||
173 -228 169 -227 165 -227 ct 161 -227 158 -228 156 -230 ct 153 -233 152 -235 152 -238 ct
|
||||
152 -240 153 -243 155 -245 ct 157 -248 158 -250 158 -251 ct 158 -253 157 -254 156 -255 ct
|
||||
155 -256 153 -257 150 -257 ct 143 -257 136 -254 130 -249 ct 122 -242 115 -232 109 -217 ct
|
||||
106 -210 100 -192 92 -164 ct 92 -164 92 -164 119 -164 ct p ef
|
||||
125 -158 m 125 -158 125 -158 189 -168 ct 189 -168 189 -168 163 -78 ct 185 -115 204 -141 222 -155 ct
|
||||
232 -164 240 -168 247 -168 ct 251 -168 254 -167 256 -164 ct 259 -162 260 -158 260 -154 ct
|
||||
260 -146 258 -138 254 -130 ct 251 -125 247 -122 241 -122 ct 238 -122 236 -123 234 -125 ct
|
||||
232 -127 230 -130 230 -134 ct 230 -136 229 -138 228 -138 ct 227 -139 226 -140 225 -140 ct
|
||||
223 -140 221 -140 219 -139 ct 216 -137 211 -132 204 -124 ct 194 -112 183 -96 171 -77 ct
|
||||
166 -68 161 -59 158 -49 ct 153 -35 150 -26 149 -23 ct 149 -23 149 -23 142 0 ct
|
||||
142 0 142 0 114 0 ct 114 0 114 0 147 -116 ct 151 -129 153 -139 153 -144 ct 153 -146 153 -148 151 -150 ct
|
||||
148 -152 145 -153 141 -153 ct 139 -153 134 -152 128 -151 ct 128 -151 128 -151 125 -158 ct
|
||||
p ef
|
||||
443 -166 m 443 -166 443 -166 406 -40 ct 406 -40 406 -40 402 -23 ct 402 -21 401 -20 401 -19 ct
|
||||
401 -17 402 -15 403 -14 ct 403 -13 404 -13 405 -13 ct 406 -13 408 -13 409 -15 ct
|
||||
413 -18 417 -26 423 -37 ct 423 -37 423 -37 429 -33 ct 422 -20 415 -11 407 -5 ct
|
||||
399 1 392 4 386 4 ct 382 4 378 3 376 0 ct 373 -3 372 -6 372 -11 ct 372 -17 373 -25 376 -35 ct
|
||||
376 -35 376 -35 380 -50 ct 362 -29 346 -14 331 -5 ct 320 1 309 4 299 4 ct 289 4 280 0 273 -7 ct
|
||||
266 -14 262 -25 262 -38 ct 262 -57 268 -77 281 -99 ct 294 -120 311 -138 331 -151 ct
|
||||
346 -161 361 -166 374 -166 ct 383 -166 390 -164 395 -160 ct 401 -157 405 -151 408 -142 ct
|
||||
408 -142 408 -142 413 -162 ct 413 -162 413 -162 443 -166 ct p
|
||||
373 -157 m 365 -157 356 -153 346 -146 ct 332 -136 320 -120 309 -100 ct 298 -80 293 -61 293 -45 ct
|
||||
293 -37 295 -30 300 -25 ct 305 -20 310 -18 317 -18 ct 332 -18 349 -28 367 -47 ct
|
||||
389 -73 399 -100 398 -128 ct 398 -138 396 -145 392 -150 ct 387 -155 381 -157 373 -157 ct
|
||||
p ef
|
||||
528 -168 m 528 -168 528 -168 504 -84 ct 515 -104 524 -119 532 -129 ct 544 -144 555 -155 567 -162 ct
|
||||
573 -166 580 -168 588 -168 ct 594 -168 599 -166 603 -162 ct 607 -158 609 -153 609 -147 ct
|
||||
609 -141 608 -133 605 -123 ct 605 -123 605 -123 591 -76 ct 612 -114 632 -140 652 -155 ct
|
||||
662 -164 673 -168 683 -168 ct 689 -168 694 -166 698 -162 ct 702 -158 704 -151 704 -143 ct
|
||||
704 -135 703 -128 700 -120 ct 700 -120 700 -120 677 -48 ct 672 -33 669 -24 669 -22 ct
|
||||
669 -21 670 -19 671 -18 ct 672 -17 673 -17 674 -17 ct 675 -17 677 -18 680 -20 ct
|
||||
686 -25 692 -33 698 -42 ct 698 -42 698 -42 704 -38 ct 701 -33 696 -26 688 -18 ct
|
||||
681 -9 674 -3 669 0 ct 663 3 658 4 654 4 ct 650 4 646 3 643 0 ct 641 -3 639 -7 639 -11 ct
|
||||
639 -17 642 -29 648 -47 ct 648 -47 648 -47 668 -106 ct 672 -120 674 -128 675 -129 ct
|
||||
675 -132 675 -134 675 -136 ct 675 -139 675 -142 673 -143 ct 671 -145 670 -146 668 -146 ct
|
||||
662 -146 656 -143 650 -138 ct 631 -122 613 -100 597 -72 ct 586 -53 576 -29 567 0 ct
|
||||
567 0 567 0 540 0 ct 540 0 540 0 574 -112 ct 578 -124 580 -132 580 -136 ct 580 -140 579 -142 577 -144 ct
|
||||
576 -145 574 -146 572 -146 ct 568 -146 564 -145 559 -142 ct 551 -137 542 -126 530 -111 ct
|
||||
518 -95 508 -80 502 -65 ct 499 -59 491 -37 479 0 ct 479 0 479 0 452 0 ct 452 0 452 0 487 -120 ct
|
||||
487 -120 487 -120 491 -136 ct 492 -138 493 -140 493 -141 ct 493 -144 491 -146 489 -148 ct
|
||||
486 -150 483 -151 479 -151 ct 478 -151 473 -150 466 -149 ct 466 -149 466 -149 464 -156 ct
|
||||
464 -156 464 -156 528 -168 ct p ef
|
||||
763 -70 m 762 -64 762 -59 762 -55 ct 762 -44 766 -35 774 -27 ct 782 -20 792 -16 803 -16 ct
|
||||
812 -16 821 -18 830 -21 ct 838 -25 851 -33 867 -45 ct 867 -45 867 -45 871 -40 ct
|
||||
841 -11 813 4 786 4 ct 768 4 754 -2 745 -13 ct 736 -24 731 -37 731 -51 ct 731 -69 737 -88 748 -107 ct
|
||||
760 -126 774 -141 792 -152 ct 809 -163 827 -168 845 -168 ct 858 -168 868 -165 874 -160 ct
|
||||
881 -155 884 -148 884 -141 ct 884 -131 880 -121 871 -112 ct 860 -99 844 -89 823 -82 ct
|
||||
809 -77 789 -73 763 -70 ct p
|
||||
764 -79 m 783 -81 799 -85 811 -90 ct 826 -97 838 -105 846 -114 ct 854 -124 858 -133 858 -141 ct
|
||||
858 -147 856 -151 853 -154 ct 850 -157 845 -159 838 -159 ct 825 -159 811 -152 797 -139 ct
|
||||
782 -125 771 -105 764 -79 ct p ef
|
||||
pom
|
||||
gr
|
||||
gr
|
||||
gr
|
||||
gr
|
||||
gr
|
||||
16800 8400 m 16238 8588 l 16238 8213 l 16800 8400 l p ef
|
||||
14400 8375 m 16350 8375 l 16350 8425 l 14400 8425 l 14400 8375 l p ef
|
||||
13028 6249 m 12578 6399 l 12578 6099 l 13028 6249 l p ef
|
||||
1 lw 0 lj 11500 6250 m 12527 6250 l 12527 6249 l 12668 6249 l ps
|
||||
tm setmatrix
|
||||
0 0 t
|
||||
1 1 s
|
||||
0 6358 t
|
||||
pom
|
||||
count op_count sub {pop} repeat countdictstack dict_count sub {end} repeat b4_inc_state restore
|
||||
%%PageTrailer
|
||||
%%Trailer
|
||||
%%EOF
|
||||
BIN
Engine/lib/speex/doc/speex_analysis.odg
Normal file
BIN
Engine/lib/speex/doc/speex_analysis.odg
Normal file
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue