summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--documentation/aacDecoder.pdf2434
-rw-r--r--documentation/aacEncoder.pdf12
-rw-r--r--libAACdec/src/aacdec_drc.cpp38
-rw-r--r--libAACdec/src/aacdec_drc.h5
-rw-r--r--libAACdec/src/aacdecoder.cpp15
-rw-r--r--libAACdec/src/aacdecoder_lib.cpp2
-rw-r--r--libAACenc/src/aacenc_lib.cpp2
-rw-r--r--libAACenc/src/band_nrg.cpp14
-rw-r--r--libAACenc/src/line_pe.cpp2
-rw-r--r--libAACenc/src/tns_param.cpp93
-rw-r--r--libFDK/include/FDK_archdef.h1
-rw-r--r--libFDK/include/clz.h3
-rw-r--r--libFDK/include/mips/cplx_mul.h39
-rw-r--r--libFDK/include/mips/fixmul_mips.h7
-rw-r--r--libFDK/include/x86/clz_x86.h (renamed from libAACenc/src/tns_param.h)76
-rw-r--r--libFDK/src/FDK_core.cpp2
-rw-r--r--libPCMutils/src/pcmutils_lib.cpp13
-rw-r--r--libSBRdec/src/sbr_dec.cpp18
-rw-r--r--libSBRdec/src/sbrdec_drc.cpp37
-rw-r--r--libSBRdec/src/sbrdec_drc.h1
-rw-r--r--libSBRdec/src/sbrdecoder.cpp19
21 files changed, 1443 insertions, 1390 deletions
diff --git a/documentation/aacDecoder.pdf b/documentation/aacDecoder.pdf
index 0d42e79..a8cee17 100644
--- a/documentation/aacDecoder.pdf
+++ b/documentation/aacDecoder.pdf
@@ -586,15 +586,15 @@ endobj
<< /S /GoTo /D [390 0 R /Fit ] >>
endobj
394 0 obj <<
-/Length 954
+/Length 956
/Filter /FlateDecode
>>
stream
-xڅV[6~fj, MߜlgI5yЂ0jArXg{tۉΘsUGcw ?_ (QpJb]%Q/Y$s+҉(B渜ثG;&إ]^9,Vo H7kDݔ)Et?m`3Y:Ym?c-?>ZȣwR5/(0OY3j%1`,/t$8ݒx<&O'\A!mC ^I%OO0eEAy
-1%
-
-X߯JQ& PuLs+QgF(HbjU=&wU`PP^< Ӫ1HeD.^&`rǒ3n]&q b sj5LsO+}j<g`he, HЪ+VqI'{?4~2Y{|i. [{'1>ZOVS1mq78>< +u[RFK_S<,W;5 z`89 {]_KWX[0?1mn-%dF܉j
-D֖\\w4N\̙j*.\h\KΤ 8lhh9f%=Ww{jQ:u~'Vv>,vÉ^ ==k Ѫ Oڰal\nq[]اHu^vc)ds;!ׁI&7oE
+xڅVKs6WHT\KIq;i["Z`AЊx5ψ}|(8(xBMI$΃*گYe8+Ҋr3̒jfo$o7î
+j
+mI~AYq‡~Kw|5'G5Sџ%8Q`Qf$1`4+yW;;<"Of\B>(ֳp׏:%y7'rϏpJ~x] !L9
+/uiÚhlշEE^2ŸmraitI32j7EQzùTA{#{7yx2Hz})U65[{'1٘d.ZGҹ$< #RFzKWš#b
+}kL9o]Vil\+YzlW~qcx|afq^||pX[G4
endstream
endobj
390 0 obj <<
@@ -8995,8 +8995,8 @@ endobj
>> endobj
1403 0 obj <<
/Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.10)/Keywords()
-/CreationDate (D:20120817135834+02'00')
-/ModDate (D:20120817135834+02'00')
+/CreationDate (D:20120927161848+02'00')
+/ModDate (D:20120927161848+02'00')
/Trapped /False
/PTEX.Fullbanner (This is pdfTeX, Version 3.1415926-1.40.10-2.2 (TeX Live 2009/Debian) kpathsea version 5.0.0)
>> endobj
@@ -9004,1413 +9004,1413 @@ xref
0 1404
0000000000 65535 f
0000000015 00000 n
-0000183151 00000 n
-0000506332 00000 n
+0000183153 00000 n
+0000506334 00000 n
0000000060 00000 n
0000000146 00000 n
-0000183320 00000 n
-0000506262 00000 n
+0000183322 00000 n
+0000506264 00000 n
0000000193 00000 n
0000000244 00000 n
-0000183437 00000 n
-0000506191 00000 n
+0000183439 00000 n
+0000506193 00000 n
0000000291 00000 n
0000000391 00000 n
-0000187368 00000 n
-0000506066 00000 n
+0000187370 00000 n
+0000506068 00000 n
0000000437 00000 n
0000000532 00000 n
-0000187538 00000 n
-0000505992 00000 n
+0000187540 00000 n
+0000505994 00000 n
0000000580 00000 n
0000000685 00000 n
-0000187655 00000 n
-0000505905 00000 n
+0000187657 00000 n
+0000505907 00000 n
0000000733 00000 n
0000000843 00000 n
-0000193760 00000 n
-0000505831 00000 n
+0000193762 00000 n
+0000505833 00000 n
0000000891 00000 n
0000000986 00000 n
-0000222466 00000 n
-0000505705 00000 n
+0000222468 00000 n
+0000505707 00000 n
0000001032 00000 n
0000001165 00000 n
-0000222636 00000 n
-0000505631 00000 n
+0000222638 00000 n
+0000505633 00000 n
0000001213 00000 n
0000001434 00000 n
-0000222754 00000 n
-0000505544 00000 n
+0000222756 00000 n
+0000505546 00000 n
0000001482 00000 n
0000001681 00000 n
-0000222872 00000 n
-0000505433 00000 n
+0000222874 00000 n
+0000505435 00000 n
0000001729 00000 n
0000001882 00000 n
-0000228898 00000 n
-0000505359 00000 n
+0000228900 00000 n
+0000505361 00000 n
0000001935 00000 n
0000001992 00000 n
-0000229016 00000 n
-0000505272 00000 n
+0000229018 00000 n
+0000505274 00000 n
0000002045 00000 n
0000002135 00000 n
-0000231745 00000 n
-0000505198 00000 n
+0000231747 00000 n
+0000505200 00000 n
0000002188 00000 n
0000002324 00000 n
-0000234296 00000 n
-0000505072 00000 n
+0000234298 00000 n
+0000505074 00000 n
0000002370 00000 n
0000002490 00000 n
-0000234471 00000 n
-0000504974 00000 n
+0000234473 00000 n
+0000504976 00000 n
0000002538 00000 n
0000002610 00000 n
-0000234584 00000 n
-0000504900 00000 n
+0000234586 00000 n
+0000504902 00000 n
0000002663 00000 n
0000002788 00000 n
-0000234697 00000 n
-0000504826 00000 n
+0000234699 00000 n
+0000504828 00000 n
0000002841 00000 n
0000002961 00000 n
-0000237268 00000 n
-0000504700 00000 n
+0000237270 00000 n
+0000504702 00000 n
0000003007 00000 n
0000003092 00000 n
-0000237324 00000 n
-0000504639 00000 n
+0000237326 00000 n
+0000504641 00000 n
0000003140 00000 n
0000003220 00000 n
-0000239489 00000 n
-0000504513 00000 n
+0000239491 00000 n
+0000504515 00000 n
0000003266 00000 n
0000003346 00000 n
-0000239545 00000 n
-0000504452 00000 n
+0000239547 00000 n
+0000504454 00000 n
0000003394 00000 n
0000003469 00000 n
-0000245205 00000 n
-0000504325 00000 n
+0000245207 00000 n
+0000504327 00000 n
0000003515 00000 n
0000003640 00000 n
-0000245318 00000 n
-0000504226 00000 n
+0000245320 00000 n
+0000504228 00000 n
0000003688 00000 n
0000003861 00000 n
-0000245431 00000 n
-0000504150 00000 n
+0000245433 00000 n
+0000504152 00000 n
0000003914 00000 n
0000004045 00000 n
-0000246768 00000 n
-0000504033 00000 n
+0000246770 00000 n
+0000504035 00000 n
0000004099 00000 n
0000004258 00000 n
-0000246882 00000 n
-0000503954 00000 n
+0000246884 00000 n
+0000503956 00000 n
0000004317 00000 n
0000004410 00000 n
-0000247001 00000 n
-0000503861 00000 n
+0000247003 00000 n
+0000503863 00000 n
0000004469 00000 n
0000004587 00000 n
-0000247120 00000 n
-0000503768 00000 n
+0000247122 00000 n
+0000503770 00000 n
0000004646 00000 n
0000004689 00000 n
-0000247239 00000 n
-0000503675 00000 n
+0000247241 00000 n
+0000503677 00000 n
0000004748 00000 n
0000004811 00000 n
-0000247358 00000 n
-0000503582 00000 n
+0000247360 00000 n
+0000503584 00000 n
0000004870 00000 n
0000004963 00000 n
-0000247477 00000 n
-0000503489 00000 n
+0000247479 00000 n
+0000503491 00000 n
0000005022 00000 n
0000005090 00000 n
-0000247596 00000 n
-0000503396 00000 n
+0000247598 00000 n
+0000503398 00000 n
0000005149 00000 n
0000005207 00000 n
-0000247715 00000 n
-0000503303 00000 n
+0000247717 00000 n
+0000503305 00000 n
0000005266 00000 n
0000005369 00000 n
-0000247834 00000 n
-0000503210 00000 n
+0000247836 00000 n
+0000503212 00000 n
0000005428 00000 n
0000005481 00000 n
-0000247953 00000 n
-0000503117 00000 n
+0000247955 00000 n
+0000503119 00000 n
0000005541 00000 n
0000005614 00000 n
-0000249694 00000 n
-0000503024 00000 n
+0000249696 00000 n
+0000503026 00000 n
0000005674 00000 n
0000005787 00000 n
-0000249808 00000 n
-0000502931 00000 n
+0000249810 00000 n
+0000502933 00000 n
0000005847 00000 n
0000005930 00000 n
-0000249927 00000 n
-0000502838 00000 n
+0000249929 00000 n
+0000502840 00000 n
0000005990 00000 n
0000006073 00000 n
-0000250041 00000 n
-0000502745 00000 n
+0000250043 00000 n
+0000502747 00000 n
0000006133 00000 n
0000006251 00000 n
-0000250155 00000 n
-0000502652 00000 n
+0000250157 00000 n
+0000502654 00000 n
0000006311 00000 n
0000006434 00000 n
-0000250268 00000 n
-0000502559 00000 n
+0000250270 00000 n
+0000502561 00000 n
0000006494 00000 n
0000006587 00000 n
-0000250387 00000 n
-0000502466 00000 n
+0000250389 00000 n
+0000502468 00000 n
0000006647 00000 n
0000006750 00000 n
-0000250506 00000 n
-0000502373 00000 n
+0000250508 00000 n
+0000502375 00000 n
0000006810 00000 n
0000006898 00000 n
-0000250625 00000 n
-0000502280 00000 n
+0000250627 00000 n
+0000502282 00000 n
0000006958 00000 n
0000007021 00000 n
-0000251706 00000 n
-0000502201 00000 n
+0000251708 00000 n
+0000502203 00000 n
0000007081 00000 n
0000007159 00000 n
-0000256951 00000 n
-0000502083 00000 n
+0000256953 00000 n
+0000502085 00000 n
0000007206 00000 n
0000007327 00000 n
-0000257065 00000 n
-0000501965 00000 n
+0000257067 00000 n
+0000501967 00000 n
0000007376 00000 n
0000007568 00000 n
-0000289845 00000 n
-0000501886 00000 n
+0000289847 00000 n
+0000501888 00000 n
0000007622 00000 n
0000007753 00000 n
-0000289902 00000 n
-0000501754 00000 n
+0000289904 00000 n
+0000501756 00000 n
0000007807 00000 n
0000007938 00000 n
-0000290016 00000 n
-0000501675 00000 n
+0000290018 00000 n
+0000501677 00000 n
0000007997 00000 n
0000008098 00000 n
-0000290133 00000 n
-0000501582 00000 n
+0000290135 00000 n
+0000501584 00000 n
0000008157 00000 n
0000008258 00000 n
-0000290252 00000 n
-0000501489 00000 n
+0000290254 00000 n
+0000501491 00000 n
0000008317 00000 n
0000008408 00000 n
-0000290365 00000 n
-0000501396 00000 n
+0000290367 00000 n
+0000501398 00000 n
0000008467 00000 n
0000008553 00000 n
-0000290483 00000 n
-0000501303 00000 n
+0000290485 00000 n
+0000501305 00000 n
0000008612 00000 n
0000008721 00000 n
-0000293226 00000 n
-0000501210 00000 n
+0000293228 00000 n
+0000501212 00000 n
0000008780 00000 n
0000008879 00000 n
-0000293345 00000 n
-0000501131 00000 n
+0000293347 00000 n
+0000501133 00000 n
0000008938 00000 n
0000009047 00000 n
-0000293402 00000 n
-0000500999 00000 n
+0000293404 00000 n
+0000501001 00000 n
0000009101 00000 n
0000009237 00000 n
-0000293516 00000 n
-0000500934 00000 n
+0000293518 00000 n
+0000500936 00000 n
0000009296 00000 n
0000009412 00000 n
-0000293573 00000 n
-0000500802 00000 n
+0000293575 00000 n
+0000500804 00000 n
0000009466 00000 n
0000009650 00000 n
-0000293687 00000 n
-0000500723 00000 n
+0000293689 00000 n
+0000500725 00000 n
0000009709 00000 n
0000009828 00000 n
-0000298544 00000 n
-0000500644 00000 n
+0000298546 00000 n
+0000500646 00000 n
0000009887 00000 n
0000009978 00000 n
-0000302537 00000 n
-0000500525 00000 n
+0000302539 00000 n
+0000500527 00000 n
0000010032 00000 n
0000010173 00000 n
-0000302651 00000 n
-0000500446 00000 n
+0000302653 00000 n
+0000500448 00000 n
0000010232 00000 n
0000010368 00000 n
-0000304424 00000 n
-0000500353 00000 n
+0000304426 00000 n
+0000500355 00000 n
0000010427 00000 n
0000010568 00000 n
-0000304538 00000 n
-0000500260 00000 n
+0000304540 00000 n
+0000500262 00000 n
0000010627 00000 n
0000010738 00000 n
-0000304651 00000 n
-0000500167 00000 n
+0000304653 00000 n
+0000500169 00000 n
0000010797 00000 n
0000010928 00000 n
-0000307030 00000 n
-0000500074 00000 n
+0000307032 00000 n
+0000500076 00000 n
0000010987 00000 n
0000011128 00000 n
-0000307144 00000 n
-0000499981 00000 n
+0000307146 00000 n
+0000499983 00000 n
0000011187 00000 n
0000011293 00000 n
-0000309114 00000 n
-0000499888 00000 n
+0000309116 00000 n
+0000499890 00000 n
0000011352 00000 n
0000011498 00000 n
-0000309227 00000 n
-0000499795 00000 n
+0000309229 00000 n
+0000499797 00000 n
0000011557 00000 n
0000011693 00000 n
-0000309340 00000 n
-0000499702 00000 n
+0000309342 00000 n
+0000499704 00000 n
0000011752 00000 n
0000011903 00000 n
-0000310994 00000 n
-0000499609 00000 n
+0000310996 00000 n
+0000499611 00000 n
0000011963 00000 n
0000012069 00000 n
-0000311110 00000 n
-0000499530 00000 n
+0000311112 00000 n
+0000499532 00000 n
0000012129 00000 n
0000012255 00000 n
-0000311225 00000 n
-0000499412 00000 n
+0000311227 00000 n
+0000499414 00000 n
0000012304 00000 n
0000012453 00000 n
-0000321806 00000 n
-0000499333 00000 n
+0000321808 00000 n
+0000499335 00000 n
0000012507 00000 n
0000012638 00000 n
-0000323786 00000 n
-0000499201 00000 n
+0000323788 00000 n
+0000499203 00000 n
0000012692 00000 n
0000012823 00000 n
-0000323903 00000 n
-0000499122 00000 n
+0000323905 00000 n
+0000499124 00000 n
0000012882 00000 n
0000012976 00000 n
-0000324019 00000 n
-0000499029 00000 n
+0000324021 00000 n
+0000499031 00000 n
0000013035 00000 n
0000013134 00000 n
-0000324133 00000 n
-0000498936 00000 n
+0000324135 00000 n
+0000498938 00000 n
0000013193 00000 n
0000013282 00000 n
-0000324248 00000 n
-0000498843 00000 n
+0000324250 00000 n
+0000498845 00000 n
0000013341 00000 n
0000013445 00000 n
-0000324365 00000 n
-0000498750 00000 n
+0000324367 00000 n
+0000498752 00000 n
0000013504 00000 n
0000013590 00000 n
-0000324482 00000 n
-0000498671 00000 n
+0000324484 00000 n
+0000498673 00000 n
0000013649 00000 n
0000013743 00000 n
-0000324540 00000 n
-0000498539 00000 n
+0000324542 00000 n
+0000498541 00000 n
0000013797 00000 n
0000013938 00000 n
-0000324656 00000 n
-0000498474 00000 n
+0000324658 00000 n
+0000498476 00000 n
0000013997 00000 n
0000014045 00000 n
-0000325729 00000 n
-0000498355 00000 n
+0000325731 00000 n
+0000498357 00000 n
0000014099 00000 n
0000014240 00000 n
-0000325845 00000 n
-0000498276 00000 n
+0000325847 00000 n
+0000498278 00000 n
0000014299 00000 n
0000014372 00000 n
-0000325961 00000 n
-0000498183 00000 n
+0000325963 00000 n
+0000498185 00000 n
0000014431 00000 n
0000014514 00000 n
-0000326077 00000 n
-0000498090 00000 n
+0000326079 00000 n
+0000498092 00000 n
0000014573 00000 n
0000014621 00000 n
-0000326194 00000 n
-0000497997 00000 n
+0000326196 00000 n
+0000497999 00000 n
0000014680 00000 n
0000014751 00000 n
-0000326311 00000 n
-0000497904 00000 n
+0000326313 00000 n
+0000497906 00000 n
0000014810 00000 n
0000014878 00000 n
-0000326427 00000 n
-0000497811 00000 n
+0000326429 00000 n
+0000497813 00000 n
0000014937 00000 n
0000015015 00000 n
-0000326544 00000 n
-0000497718 00000 n
+0000326546 00000 n
+0000497720 00000 n
0000015074 00000 n
0000015142 00000 n
-0000326661 00000 n
-0000497625 00000 n
+0000326663 00000 n
+0000497627 00000 n
0000015201 00000 n
0000015292 00000 n
-0000326777 00000 n
-0000497532 00000 n
+0000326779 00000 n
+0000497534 00000 n
0000015351 00000 n
0000015444 00000 n
-0000327613 00000 n
-0000497439 00000 n
+0000327615 00000 n
+0000497441 00000 n
0000015504 00000 n
0000015602 00000 n
-0000327730 00000 n
-0000497360 00000 n
+0000327732 00000 n
+0000497362 00000 n
0000015662 00000 n
0000015730 00000 n
-0000016817 00000 n
-0000016951 00000 n
-0000160274 00000 n
-0000160402 00000 n
+0000016819 00000 n
+0000016953 00000 n
+0000160276 00000 n
+0000160404 00000 n
0000015782 00000 n
-0000160345 00000 n
-0000495352 00000 n
-0000495708 00000 n
-0000496064 00000 n
-0000128677 00000 n
-0000160742 00000 n
-0000160623 00000 n
-0000160523 00000 n
-0000162004 00000 n
-0000162155 00000 n
-0000162309 00000 n
-0000162461 00000 n
-0000162611 00000 n
-0000162764 00000 n
-0000162918 00000 n
-0000163072 00000 n
-0000163223 00000 n
-0000163377 00000 n
-0000163531 00000 n
-0000163685 00000 n
-0000163844 00000 n
-0000164003 00000 n
-0000164162 00000 n
-0000164313 00000 n
-0000164467 00000 n
-0000164626 00000 n
-0000164785 00000 n
-0000164936 00000 n
-0000165089 00000 n
-0000165240 00000 n
-0000165394 00000 n
-0000165544 00000 n
-0000167322 00000 n
-0000165754 00000 n
-0000161681 00000 n
-0000160783 00000 n
-0000165697 00000 n
-0000167481 00000 n
-0000167640 00000 n
-0000167800 00000 n
-0000167964 00000 n
-0000168127 00000 n
-0000168291 00000 n
-0000168455 00000 n
-0000168618 00000 n
-0000168781 00000 n
-0000168945 00000 n
-0000169109 00000 n
-0000169273 00000 n
-0000169438 00000 n
-0000169603 00000 n
-0000169768 00000 n
-0000169933 00000 n
-0000170097 00000 n
-0000170262 00000 n
-0000170426 00000 n
-0000170591 00000 n
-0000170755 00000 n
-0000170920 00000 n
-0000171071 00000 n
-0000171225 00000 n
-0000171384 00000 n
-0000171543 00000 n
-0000171707 00000 n
-0000171870 00000 n
-0000172034 00000 n
-0000172198 00000 n
-0000172362 00000 n
-0000172526 00000 n
-0000172690 00000 n
-0000172849 00000 n
-0000173012 00000 n
-0000174770 00000 n
-0000173170 00000 n
-0000166903 00000 n
-0000165839 00000 n
-0000174934 00000 n
-0000175098 00000 n
-0000175257 00000 n
-0000175421 00000 n
-0000175585 00000 n
-0000175749 00000 n
-0000175913 00000 n
-0000176076 00000 n
-0000176240 00000 n
-0000176403 00000 n
-0000176566 00000 n
-0000176730 00000 n
-0000176894 00000 n
-0000177059 00000 n
-0000177213 00000 n
-0000177371 00000 n
-0000177529 00000 n
-0000177693 00000 n
-0000177857 00000 n
-0000178021 00000 n
-0000178185 00000 n
-0000178349 00000 n
-0000178513 00000 n
-0000178672 00000 n
-0000178836 00000 n
-0000178995 00000 n
-0000179159 00000 n
-0000179322 00000 n
-0000179486 00000 n
-0000179649 00000 n
-0000179811 00000 n
-0000179975 00000 n
-0000180138 00000 n
-0000180302 00000 n
-0000180466 00000 n
-0000181154 00000 n
-0000180630 00000 n
-0000174351 00000 n
-0000173255 00000 n
-0000181319 00000 n
-0000181015 00000 n
-0000180715 00000 n
-0000183493 00000 n
-0000182976 00000 n
-0000181404 00000 n
-0000183095 00000 n
-0000183206 00000 n
-0000183263 00000 n
-0000183375 00000 n
-0000496182 00000 n
-0000183980 00000 n
-0000183805 00000 n
-0000183578 00000 n
-0000183924 00000 n
-0000186261 00000 n
-0000186421 00000 n
-0000186573 00000 n
-0000186732 00000 n
-0000186926 00000 n
-0000187119 00000 n
-0000190724 00000 n
-0000190876 00000 n
-0000191071 00000 n
-0000191524 00000 n
-0000187882 00000 n
-0000186082 00000 n
-0000184052 00000 n
-0000187312 00000 n
-0000187424 00000 n
-0000187481 00000 n
-0000187594 00000 n
-0000187711 00000 n
-0000495178 00000 n
-0000187768 00000 n
-0000187825 00000 n
-0000257008 00000 n
-0000311168 00000 n
-0000234352 00000 n
-0000309397 00000 n
-0000304594 00000 n
-0000306974 00000 n
-0000191718 00000 n
-0000191913 00000 n
-0000192108 00000 n
-0000192302 00000 n
-0000192453 00000 n
-0000192648 00000 n
-0000192798 00000 n
-0000193168 00000 n
-0000195150 00000 n
-0000193816 00000 n
-0000190466 00000 n
-0000187980 00000 n
-0000193363 00000 n
-0000193419 00000 n
-0000191298 00000 n
-0000193476 00000 n
-0000193532 00000 n
-0000193589 00000 n
-0000193646 00000 n
-0000193703 00000 n
-0000192984 00000 n
-0000294054 00000 n
-0000307087 00000 n
-0000309284 00000 n
-0000304481 00000 n
-0000324077 00000 n
-0000218031 00000 n
-0000195016 00000 n
-0000193914 00000 n
-0000217913 00000 n
-0000217969 00000 n
-0000495034 00000 n
-0000494600 00000 n
-0000494745 00000 n
-0000494889 00000 n
-0000208039 00000 n
-0000218608 00000 n
-0000218433 00000 n
-0000218203 00000 n
-0000218552 00000 n
-0000220670 00000 n
-0000220829 00000 n
-0000221214 00000 n
-0000221442 00000 n
-0000221669 00000 n
-0000221864 00000 n
-0000222057 00000 n
-0000222216 00000 n
-0000224943 00000 n
-0000225170 00000 n
-0000225624 00000 n
-0000222989 00000 n
-0000220467 00000 n
-0000218680 00000 n
-0000222410 00000 n
-0000222522 00000 n
-0000222579 00000 n
-0000221022 00000 n
-0000222692 00000 n
-0000222810 00000 n
-0000222928 00000 n
-0000496300 00000 n
-0000245261 00000 n
-0000249865 00000 n
-0000298601 00000 n
-0000301983 00000 n
-0000311052 00000 n
-0000225784 00000 n
-0000225977 00000 n
-0000226170 00000 n
-0000226361 00000 n
-0000226587 00000 n
-0000226779 00000 n
-0000227007 00000 n
-0000227461 00000 n
-0000227619 00000 n
-0000227811 00000 n
-0000228004 00000 n
-0000228196 00000 n
-0000228423 00000 n
-0000228651 00000 n
-0000230269 00000 n
-0000230497 00000 n
-0000230952 00000 n
-0000229133 00000 n
-0000224660 00000 n
-0000223074 00000 n
-0000228842 00000 n
-0000225397 00000 n
-0000228954 00000 n
-0000227235 00000 n
-0000229072 00000 n
-0000250444 00000 n
-0000250325 00000 n
-0000247891 00000 n
-0000231112 00000 n
-0000231305 00000 n
-0000231498 00000 n
-0000231801 00000 n
-0000230082 00000 n
-0000229231 00000 n
-0000231689 00000 n
-0000230725 00000 n
-0000232307 00000 n
-0000232132 00000 n
-0000231899 00000 n
-0000232251 00000 n
-0000233751 00000 n
-0000233903 00000 n
-0000234088 00000 n
-0000234753 00000 n
-0000233596 00000 n
-0000232379 00000 n
-0000234240 00000 n
-0000234409 00000 n
-0000234527 00000 n
-0000234640 00000 n
-0000324598 00000 n
-0000236184 00000 n
-0000236009 00000 n
-0000234851 00000 n
-0000236128 00000 n
-0000236898 00000 n
-0000237058 00000 n
-0000237380 00000 n
-0000236751 00000 n
-0000236269 00000 n
-0000237212 00000 n
-0000496418 00000 n
-0000237868 00000 n
-0000237693 00000 n
-0000237465 00000 n
-0000237812 00000 n
-0000238648 00000 n
-0000238809 00000 n
-0000238963 00000 n
-0000239114 00000 n
-0000239279 00000 n
-0000239601 00000 n
-0000238477 00000 n
-0000237940 00000 n
-0000239433 00000 n
-0000240086 00000 n
-0000239911 00000 n
-0000239686 00000 n
-0000240030 00000 n
-0000241277 00000 n
-0000241471 00000 n
-0000241665 00000 n
-0000241859 00000 n
-0000242052 00000 n
-0000242246 00000 n
-0000242439 00000 n
-0000242633 00000 n
-0000242827 00000 n
-0000243021 00000 n
-0000243215 00000 n
-0000243409 00000 n
-0000243603 00000 n
-0000243796 00000 n
-0000243990 00000 n
-0000244184 00000 n
-0000244376 00000 n
-0000244568 00000 n
-0000244762 00000 n
-0000244956 00000 n
-0000245487 00000 n
-0000240986 00000 n
-0000240158 00000 n
-0000245149 00000 n
-0000245374 00000 n
-0000250682 00000 n
-0000246825 00000 n
-0000250563 00000 n
-0000247058 00000 n
-0000247296 00000 n
-0000247177 00000 n
-0000246939 00000 n
-0000247534 00000 n
-0000247653 00000 n
-0000247772 00000 n
-0000247415 00000 n
-0000249984 00000 n
-0000250211 00000 n
-0000249751 00000 n
-0000250098 00000 n
-0000249637 00000 n
-0000248010 00000 n
-0000246593 00000 n
-0000245611 00000 n
-0000246712 00000 n
-0000249387 00000 n
-0000250743 00000 n
-0000249248 00000 n
-0000248095 00000 n
-0000249581 00000 n
-0000496536 00000 n
-0000251492 00000 n
-0000251763 00000 n
-0000251353 00000 n
-0000250854 00000 n
-0000251650 00000 n
-0000252433 00000 n
-0000256828 00000 n
-0000258677 00000 n
-0000262114 00000 n
-0000257122 00000 n
-0000252299 00000 n
-0000251850 00000 n
-0000256895 00000 n
-0000253343 00000 n
-0000253473 00000 n
-0000253613 00000 n
-0000253900 00000 n
-0000254305 00000 n
-0000254509 00000 n
-0000254530 00000 n
-0000256806 00000 n
-0000262181 00000 n
-0000262341 00000 n
-0000262535 00000 n
-0000262729 00000 n
-0000262924 00000 n
-0000263119 00000 n
-0000263313 00000 n
-0000263508 00000 n
-0000263703 00000 n
-0000263898 00000 n
-0000264093 00000 n
-0000264320 00000 n
-0000264547 00000 n
-0000264774 00000 n
-0000264997 00000 n
-0000265222 00000 n
-0000267279 00000 n
-0000267506 00000 n
-0000265732 00000 n
-0000258403 00000 n
-0000257248 00000 n
-0000265448 00000 n
-0000265504 00000 n
-0000495884 00000 n
-0000265561 00000 n
-0000265618 00000 n
-0000265675 00000 n
-0000259340 00000 n
-0000259470 00000 n
-0000259610 00000 n
-0000259861 00000 n
-0000260225 00000 n
-0000260429 00000 n
-0000260450 00000 n
-0000262092 00000 n
-0000290540 00000 n
-0000290422 00000 n
-0000293283 00000 n
-0000290073 00000 n
-0000290190 00000 n
-0000290309 00000 n
-0000289959 00000 n
-0000293459 00000 n
-0000293630 00000 n
-0000293744 00000 n
-0000293806 00000 n
-0000293868 00000 n
-0000293930 00000 n
-0000293992 00000 n
-0000267733 00000 n
-0000267956 00000 n
-0000268183 00000 n
-0000268410 00000 n
-0000268636 00000 n
-0000268863 00000 n
-0000269090 00000 n
-0000269317 00000 n
-0000269544 00000 n
-0000269771 00000 n
-0000269998 00000 n
-0000270225 00000 n
-0000270452 00000 n
-0000270679 00000 n
-0000270906 00000 n
-0000271133 00000 n
-0000271359 00000 n
-0000271584 00000 n
-0000271811 00000 n
-0000272038 00000 n
-0000272265 00000 n
-0000272492 00000 n
-0000272718 00000 n
-0000272945 00000 n
-0000273172 00000 n
-0000273398 00000 n
-0000273625 00000 n
-0000273851 00000 n
-0000274078 00000 n
-0000274305 00000 n
-0000274531 00000 n
-0000274758 00000 n
-0000274983 00000 n
-0000275176 00000 n
-0000275403 00000 n
-0000275630 00000 n
-0000275856 00000 n
-0000278659 00000 n
-0000278886 00000 n
-0000279113 00000 n
-0000276138 00000 n
-0000266836 00000 n
-0000265884 00000 n
-0000276082 00000 n
-0000294116 00000 n
-0000294178 00000 n
-0000294240 00000 n
-0000294302 00000 n
-0000294364 00000 n
-0000294426 00000 n
-0000294488 00000 n
-0000294550 00000 n
-0000294611 00000 n
-0000294673 00000 n
-0000294735 00000 n
-0000294797 00000 n
-0000297125 00000 n
-0000297187 00000 n
-0000297249 00000 n
-0000297311 00000 n
-0000297372 00000 n
-0000297434 00000 n
-0000297496 00000 n
-0000297558 00000 n
-0000297620 00000 n
-0000297682 00000 n
-0000297744 00000 n
-0000297806 00000 n
-0000297868 00000 n
-0000297930 00000 n
-0000297992 00000 n
-0000298054 00000 n
-0000298116 00000 n
-0000298178 00000 n
-0000298240 00000 n
-0000298302 00000 n
-0000298364 00000 n
-0000298426 00000 n
-0000298487 00000 n
-0000301859 00000 n
-0000301921 00000 n
-0000279340 00000 n
-0000279566 00000 n
-0000279793 00000 n
-0000280020 00000 n
-0000280247 00000 n
-0000280474 00000 n
-0000280668 00000 n
-0000280863 00000 n
-0000281056 00000 n
-0000281251 00000 n
-0000281446 00000 n
-0000281639 00000 n
-0000281834 00000 n
-0000282028 00000 n
-0000282415 00000 n
-0000282608 00000 n
-0000282803 00000 n
-0000282998 00000 n
-0000283387 00000 n
-0000283582 00000 n
-0000283777 00000 n
-0000283972 00000 n
-0000284167 00000 n
-0000284360 00000 n
-0000284546 00000 n
-0000284737 00000 n
-0000284928 00000 n
-0000285120 00000 n
-0000285315 00000 n
-0000285510 00000 n
-0000287718 00000 n
-0000287913 00000 n
-0000286011 00000 n
-0000278240 00000 n
-0000276236 00000 n
-0000285898 00000 n
-0000285954 00000 n
-0000282223 00000 n
-0000283193 00000 n
-0000285705 00000 n
-0000302045 00000 n
-0000302103 00000 n
-0000302165 00000 n
-0000302227 00000 n
-0000302289 00000 n
-0000302351 00000 n
-0000302413 00000 n
-0000302475 00000 n
-0000304367 00000 n
-0000302594 00000 n
-0000309057 00000 n
-0000326019 00000 n
-0000288108 00000 n
-0000288268 00000 n
-0000288461 00000 n
-0000288656 00000 n
-0000288815 00000 n
-0000289010 00000 n
-0000289205 00000 n
-0000289400 00000 n
-0000289595 00000 n
-0000290596 00000 n
-0000287499 00000 n
-0000286122 00000 n
-0000289789 00000 n
-0000495528 00000 n
-0000496654 00000 n
-0000309171 00000 n
-0000292781 00000 n
-0000294859 00000 n
-0000292634 00000 n
-0000290733 00000 n
-0000293170 00000 n
-0000292976 00000 n
-0000298663 00000 n
-0000296950 00000 n
-0000294983 00000 n
-0000297069 00000 n
-0000302708 00000 n
-0000301684 00000 n
-0000298761 00000 n
-0000301803 00000 n
-0000304708 00000 n
-0000304192 00000 n
-0000302819 00000 n
-0000304311 00000 n
-0000307201 00000 n
-0000306799 00000 n
-0000304819 00000 n
-0000306918 00000 n
-0000308682 00000 n
-0000308841 00000 n
-0000309453 00000 n
-0000308535 00000 n
-0000307312 00000 n
-0000309001 00000 n
-0000496772 00000 n
-0000310770 00000 n
-0000312778 00000 n
-0000317978 00000 n
-0000311283 00000 n
-0000310628 00000 n
-0000309565 00000 n
-0000310936 00000 n
-0000318045 00000 n
-0000318232 00000 n
-0000318419 00000 n
-0000318606 00000 n
-0000318793 00000 n
-0000318980 00000 n
-0000319167 00000 n
-0000319354 00000 n
-0000319541 00000 n
-0000319728 00000 n
-0000319914 00000 n
-0000320101 00000 n
-0000320287 00000 n
-0000320473 00000 n
-0000320659 00000 n
-0000320846 00000 n
-0000321032 00000 n
-0000321218 00000 n
-0000321405 00000 n
-0000321864 00000 n
-0000312458 00000 n
-0000311395 00000 n
-0000321571 00000 n
-0000321629 00000 n
-0000321688 00000 n
-0000321747 00000 n
-0000314214 00000 n
-0000314345 00000 n
-0000314488 00000 n
-0000314793 00000 n
-0000315216 00000 n
-0000315422 00000 n
-0000315444 00000 n
-0000317955 00000 n
-0000323961 00000 n
-0000324306 00000 n
-0000324423 00000 n
-0000323844 00000 n
-0000324189 00000 n
-0000326719 00000 n
-0000327554 00000 n
-0000325902 00000 n
-0000326485 00000 n
-0000326602 00000 n
-0000327671 00000 n
-0000325787 00000 n
-0000326135 00000 n
-0000326252 00000 n
-0000326368 00000 n
-0000323532 00000 n
-0000324714 00000 n
-0000323389 00000 n
-0000321991 00000 n
-0000323728 00000 n
-0000326835 00000 n
-0000325549 00000 n
-0000324826 00000 n
-0000325671 00000 n
-0000327788 00000 n
-0000327374 00000 n
-0000326934 00000 n
-0000327496 00000 n
-0000329258 00000 n
-0000329409 00000 n
-0000329559 00000 n
-0000329710 00000 n
-0000329861 00000 n
-0000330012 00000 n
-0000330163 00000 n
-0000330314 00000 n
-0000330465 00000 n
-0000330615 00000 n
-0000330766 00000 n
-0000330917 00000 n
-0000331068 00000 n
-0000331219 00000 n
-0000331370 00000 n
-0000331520 00000 n
-0000331671 00000 n
-0000331822 00000 n
-0000331973 00000 n
-0000332124 00000 n
-0000332275 00000 n
-0000332426 00000 n
-0000332576 00000 n
-0000332727 00000 n
-0000332878 00000 n
-0000333029 00000 n
-0000333180 00000 n
-0000333331 00000 n
-0000333482 00000 n
-0000333633 00000 n
-0000333784 00000 n
-0000333935 00000 n
-0000334086 00000 n
-0000334237 00000 n
-0000334388 00000 n
-0000334539 00000 n
-0000334689 00000 n
-0000334840 00000 n
-0000334991 00000 n
-0000335142 00000 n
-0000335292 00000 n
-0000335443 00000 n
-0000335594 00000 n
-0000337900 00000 n
-0000335803 00000 n
-0000328736 00000 n
-0000327874 00000 n
-0000335745 00000 n
-0000496895 00000 n
-0000338051 00000 n
-0000338202 00000 n
-0000338353 00000 n
-0000338503 00000 n
-0000338653 00000 n
-0000338804 00000 n
-0000338955 00000 n
-0000339106 00000 n
-0000339257 00000 n
-0000339408 00000 n
-0000339559 00000 n
-0000339710 00000 n
-0000339861 00000 n
-0000340012 00000 n
-0000340163 00000 n
-0000340314 00000 n
-0000340465 00000 n
-0000340616 00000 n
-0000340766 00000 n
-0000340917 00000 n
-0000341067 00000 n
-0000341217 00000 n
-0000341367 00000 n
-0000341518 00000 n
-0000341669 00000 n
-0000341819 00000 n
-0000341970 00000 n
-0000342121 00000 n
-0000342272 00000 n
-0000342422 00000 n
-0000342573 00000 n
-0000342723 00000 n
-0000342874 00000 n
-0000343024 00000 n
-0000343175 00000 n
-0000343326 00000 n
-0000343476 00000 n
-0000343626 00000 n
-0000343777 00000 n
-0000343928 00000 n
-0000344079 00000 n
-0000344230 00000 n
-0000344380 00000 n
-0000344531 00000 n
-0000344680 00000 n
-0000344831 00000 n
-0000344982 00000 n
-0000345132 00000 n
-0000345283 00000 n
-0000345433 00000 n
-0000345584 00000 n
-0000345735 00000 n
-0000345886 00000 n
-0000346036 00000 n
-0000346187 00000 n
-0000346338 00000 n
-0000346489 00000 n
-0000346640 00000 n
-0000346791 00000 n
-0000346942 00000 n
-0000347093 00000 n
-0000347244 00000 n
-0000347395 00000 n
-0000347545 00000 n
-0000347696 00000 n
-0000347847 00000 n
-0000347998 00000 n
-0000348149 00000 n
-0000348299 00000 n
-0000348449 00000 n
-0000348599 00000 n
-0000348750 00000 n
-0000348958 00000 n
-0000337108 00000 n
-0000335889 00000 n
-0000348900 00000 n
-0000350847 00000 n
-0000350997 00000 n
-0000351148 00000 n
-0000351299 00000 n
-0000351450 00000 n
-0000351601 00000 n
-0000351752 00000 n
-0000351903 00000 n
-0000352054 00000 n
-0000352204 00000 n
-0000352354 00000 n
-0000352505 00000 n
-0000352655 00000 n
-0000352804 00000 n
-0000352952 00000 n
-0000353102 00000 n
-0000353253 00000 n
-0000353404 00000 n
-0000353555 00000 n
-0000353706 00000 n
-0000353856 00000 n
-0000354006 00000 n
-0000354157 00000 n
-0000354306 00000 n
-0000354456 00000 n
-0000354607 00000 n
-0000354758 00000 n
-0000354909 00000 n
-0000355060 00000 n
-0000355211 00000 n
-0000355362 00000 n
-0000355513 00000 n
-0000355663 00000 n
-0000355814 00000 n
-0000355965 00000 n
-0000356116 00000 n
-0000356265 00000 n
-0000356415 00000 n
-0000356566 00000 n
-0000356717 00000 n
-0000356867 00000 n
-0000357017 00000 n
-0000357168 00000 n
-0000357319 00000 n
-0000357469 00000 n
-0000357620 00000 n
-0000357770 00000 n
-0000357920 00000 n
-0000358070 00000 n
-0000358220 00000 n
-0000358370 00000 n
-0000358521 00000 n
-0000358672 00000 n
-0000358823 00000 n
-0000358974 00000 n
-0000359125 00000 n
-0000359276 00000 n
-0000359426 00000 n
-0000359577 00000 n
-0000359728 00000 n
-0000359879 00000 n
-0000360030 00000 n
-0000360181 00000 n
-0000360331 00000 n
-0000360481 00000 n
-0000360632 00000 n
-0000360783 00000 n
-0000360934 00000 n
-0000361085 00000 n
-0000361236 00000 n
-0000361387 00000 n
-0000361538 00000 n
-0000362987 00000 n
-0000361747 00000 n
-0000350064 00000 n
-0000349044 00000 n
-0000361689 00000 n
-0000363138 00000 n
-0000363289 00000 n
-0000363440 00000 n
-0000363591 00000 n
-0000363742 00000 n
-0000363893 00000 n
-0000364044 00000 n
-0000364195 00000 n
-0000364345 00000 n
-0000364495 00000 n
-0000364646 00000 n
-0000364797 00000 n
-0000364948 00000 n
-0000365099 00000 n
-0000365249 00000 n
-0000365400 00000 n
-0000365550 00000 n
-0000365701 00000 n
-0000365850 00000 n
-0000365999 00000 n
-0000366149 00000 n
-0000366300 00000 n
-0000366451 00000 n
-0000366602 00000 n
-0000366753 00000 n
-0000366904 00000 n
-0000367054 00000 n
-0000367205 00000 n
-0000367355 00000 n
-0000367506 00000 n
-0000367657 00000 n
-0000367807 00000 n
-0000367958 00000 n
-0000368108 00000 n
-0000368258 00000 n
-0000368409 00000 n
-0000368618 00000 n
-0000362519 00000 n
-0000361833 00000 n
-0000368560 00000 n
-0000494131 00000 n
-0000368704 00000 n
-0000369176 00000 n
-0000369652 00000 n
-0000370253 00000 n
-0000370337 00000 n
-0000370535 00000 n
-0000370561 00000 n
-0000370949 00000 n
-0000371828 00000 n
-0000372318 00000 n
-0000383003 00000 n
-0000383268 00000 n
-0000392651 00000 n
-0000392921 00000 n
-0000400115 00000 n
-0000400354 00000 n
-0000407383 00000 n
-0000407615 00000 n
-0000425931 00000 n
-0000426477 00000 n
-0000444500 00000 n
-0000445041 00000 n
-0000459123 00000 n
-0000459499 00000 n
-0000479378 00000 n
-0000479969 00000 n
-0000493739 00000 n
-0000497002 00000 n
-0000497122 00000 n
-0000497211 00000 n
-0000497284 00000 n
-0000506441 00000 n
-0000506676 00000 n
-0000506870 00000 n
-0000507059 00000 n
-0000507369 00000 n
-0000507786 00000 n
-0000508317 00000 n
-0000508947 00000 n
-0000509742 00000 n
-0000510438 00000 n
-0000510969 00000 n
-0000511698 00000 n
-0000512493 00000 n
-0000513288 00000 n
-0000514083 00000 n
-0000514878 00000 n
-0000515673 00000 n
-0000516318 00000 n
-0000516498 00000 n
-0000516787 00000 n
-0000517252 00000 n
-0000517716 00000 n
-0000518070 00000 n
-0000518241 00000 n
-0000518411 00000 n
-0000518582 00000 n
-0000518753 00000 n
-0000518930 00000 n
-0000519098 00000 n
-0000519283 00000 n
-0000519480 00000 n
-0000519677 00000 n
-0000519875 00000 n
-0000520284 00000 n
-0000520807 00000 n
-0000521330 00000 n
-0000521746 00000 n
-0000521985 00000 n
-0000522228 00000 n
-0000522500 00000 n
-0000522791 00000 n
-0000523077 00000 n
-0000523360 00000 n
-0000523643 00000 n
-0000523928 00000 n
-0000524211 00000 n
-0000524494 00000 n
-0000524779 00000 n
-0000525062 00000 n
-0000525185 00000 n
-0000525355 00000 n
-0000525594 00000 n
-0000525790 00000 n
-0000525908 00000 n
-0000526028 00000 n
-0000526157 00000 n
-0000526296 00000 n
-0000526440 00000 n
-0000526539 00000 n
-0000526673 00000 n
-0000526785 00000 n
-0000526888 00000 n
-0000526928 00000 n
-0000527109 00000 n
+0000160347 00000 n
+0000495354 00000 n
+0000495710 00000 n
+0000496066 00000 n
+0000128679 00000 n
+0000160744 00000 n
+0000160625 00000 n
+0000160525 00000 n
+0000162006 00000 n
+0000162157 00000 n
+0000162311 00000 n
+0000162463 00000 n
+0000162613 00000 n
+0000162766 00000 n
+0000162920 00000 n
+0000163074 00000 n
+0000163225 00000 n
+0000163379 00000 n
+0000163533 00000 n
+0000163687 00000 n
+0000163846 00000 n
+0000164005 00000 n
+0000164164 00000 n
+0000164315 00000 n
+0000164469 00000 n
+0000164628 00000 n
+0000164787 00000 n
+0000164938 00000 n
+0000165091 00000 n
+0000165242 00000 n
+0000165396 00000 n
+0000165546 00000 n
+0000167324 00000 n
+0000165756 00000 n
+0000161683 00000 n
+0000160785 00000 n
+0000165699 00000 n
+0000167483 00000 n
+0000167642 00000 n
+0000167802 00000 n
+0000167966 00000 n
+0000168129 00000 n
+0000168293 00000 n
+0000168457 00000 n
+0000168620 00000 n
+0000168783 00000 n
+0000168947 00000 n
+0000169111 00000 n
+0000169275 00000 n
+0000169440 00000 n
+0000169605 00000 n
+0000169770 00000 n
+0000169935 00000 n
+0000170099 00000 n
+0000170264 00000 n
+0000170428 00000 n
+0000170593 00000 n
+0000170757 00000 n
+0000170922 00000 n
+0000171073 00000 n
+0000171227 00000 n
+0000171386 00000 n
+0000171545 00000 n
+0000171709 00000 n
+0000171872 00000 n
+0000172036 00000 n
+0000172200 00000 n
+0000172364 00000 n
+0000172528 00000 n
+0000172692 00000 n
+0000172851 00000 n
+0000173014 00000 n
+0000174772 00000 n
+0000173172 00000 n
+0000166905 00000 n
+0000165841 00000 n
+0000174936 00000 n
+0000175100 00000 n
+0000175259 00000 n
+0000175423 00000 n
+0000175587 00000 n
+0000175751 00000 n
+0000175915 00000 n
+0000176078 00000 n
+0000176242 00000 n
+0000176405 00000 n
+0000176568 00000 n
+0000176732 00000 n
+0000176896 00000 n
+0000177061 00000 n
+0000177215 00000 n
+0000177373 00000 n
+0000177531 00000 n
+0000177695 00000 n
+0000177859 00000 n
+0000178023 00000 n
+0000178187 00000 n
+0000178351 00000 n
+0000178515 00000 n
+0000178674 00000 n
+0000178838 00000 n
+0000178997 00000 n
+0000179161 00000 n
+0000179324 00000 n
+0000179488 00000 n
+0000179651 00000 n
+0000179813 00000 n
+0000179977 00000 n
+0000180140 00000 n
+0000180304 00000 n
+0000180468 00000 n
+0000181156 00000 n
+0000180632 00000 n
+0000174353 00000 n
+0000173257 00000 n
+0000181321 00000 n
+0000181017 00000 n
+0000180717 00000 n
+0000183495 00000 n
+0000182978 00000 n
+0000181406 00000 n
+0000183097 00000 n
+0000183208 00000 n
+0000183265 00000 n
+0000183377 00000 n
+0000496184 00000 n
+0000183982 00000 n
+0000183807 00000 n
+0000183580 00000 n
+0000183926 00000 n
+0000186263 00000 n
+0000186423 00000 n
+0000186575 00000 n
+0000186734 00000 n
+0000186928 00000 n
+0000187121 00000 n
+0000190726 00000 n
+0000190878 00000 n
+0000191073 00000 n
+0000191526 00000 n
+0000187884 00000 n
+0000186084 00000 n
+0000184054 00000 n
+0000187314 00000 n
+0000187426 00000 n
+0000187483 00000 n
+0000187596 00000 n
+0000187713 00000 n
+0000495180 00000 n
+0000187770 00000 n
+0000187827 00000 n
+0000257010 00000 n
+0000311170 00000 n
+0000234354 00000 n
+0000309399 00000 n
+0000304596 00000 n
+0000306976 00000 n
+0000191720 00000 n
+0000191915 00000 n
+0000192110 00000 n
+0000192304 00000 n
+0000192455 00000 n
+0000192650 00000 n
+0000192800 00000 n
+0000193170 00000 n
+0000195152 00000 n
+0000193818 00000 n
+0000190468 00000 n
+0000187982 00000 n
+0000193365 00000 n
+0000193421 00000 n
+0000191300 00000 n
+0000193478 00000 n
+0000193534 00000 n
+0000193591 00000 n
+0000193648 00000 n
+0000193705 00000 n
+0000192986 00000 n
+0000294056 00000 n
+0000307089 00000 n
+0000309286 00000 n
+0000304483 00000 n
+0000324079 00000 n
+0000218033 00000 n
+0000195018 00000 n
+0000193916 00000 n
+0000217915 00000 n
+0000217971 00000 n
+0000495036 00000 n
+0000494602 00000 n
+0000494747 00000 n
+0000494891 00000 n
+0000208041 00000 n
+0000218610 00000 n
+0000218435 00000 n
+0000218205 00000 n
+0000218554 00000 n
+0000220672 00000 n
+0000220831 00000 n
+0000221216 00000 n
+0000221444 00000 n
+0000221671 00000 n
+0000221866 00000 n
+0000222059 00000 n
+0000222218 00000 n
+0000224945 00000 n
+0000225172 00000 n
+0000225626 00000 n
+0000222991 00000 n
+0000220469 00000 n
+0000218682 00000 n
+0000222412 00000 n
+0000222524 00000 n
+0000222581 00000 n
+0000221024 00000 n
+0000222694 00000 n
+0000222812 00000 n
+0000222930 00000 n
+0000496302 00000 n
+0000245263 00000 n
+0000249867 00000 n
+0000298603 00000 n
+0000301985 00000 n
+0000311054 00000 n
+0000225786 00000 n
+0000225979 00000 n
+0000226172 00000 n
+0000226363 00000 n
+0000226589 00000 n
+0000226781 00000 n
+0000227009 00000 n
+0000227463 00000 n
+0000227621 00000 n
+0000227813 00000 n
+0000228006 00000 n
+0000228198 00000 n
+0000228425 00000 n
+0000228653 00000 n
+0000230271 00000 n
+0000230499 00000 n
+0000230954 00000 n
+0000229135 00000 n
+0000224662 00000 n
+0000223076 00000 n
+0000228844 00000 n
+0000225399 00000 n
+0000228956 00000 n
+0000227237 00000 n
+0000229074 00000 n
+0000250446 00000 n
+0000250327 00000 n
+0000247893 00000 n
+0000231114 00000 n
+0000231307 00000 n
+0000231500 00000 n
+0000231803 00000 n
+0000230084 00000 n
+0000229233 00000 n
+0000231691 00000 n
+0000230727 00000 n
+0000232309 00000 n
+0000232134 00000 n
+0000231901 00000 n
+0000232253 00000 n
+0000233753 00000 n
+0000233905 00000 n
+0000234090 00000 n
+0000234755 00000 n
+0000233598 00000 n
+0000232381 00000 n
+0000234242 00000 n
+0000234411 00000 n
+0000234529 00000 n
+0000234642 00000 n
+0000324600 00000 n
+0000236186 00000 n
+0000236011 00000 n
+0000234853 00000 n
+0000236130 00000 n
+0000236900 00000 n
+0000237060 00000 n
+0000237382 00000 n
+0000236753 00000 n
+0000236271 00000 n
+0000237214 00000 n
+0000496420 00000 n
+0000237870 00000 n
+0000237695 00000 n
+0000237467 00000 n
+0000237814 00000 n
+0000238650 00000 n
+0000238811 00000 n
+0000238965 00000 n
+0000239116 00000 n
+0000239281 00000 n
+0000239603 00000 n
+0000238479 00000 n
+0000237942 00000 n
+0000239435 00000 n
+0000240088 00000 n
+0000239913 00000 n
+0000239688 00000 n
+0000240032 00000 n
+0000241279 00000 n
+0000241473 00000 n
+0000241667 00000 n
+0000241861 00000 n
+0000242054 00000 n
+0000242248 00000 n
+0000242441 00000 n
+0000242635 00000 n
+0000242829 00000 n
+0000243023 00000 n
+0000243217 00000 n
+0000243411 00000 n
+0000243605 00000 n
+0000243798 00000 n
+0000243992 00000 n
+0000244186 00000 n
+0000244378 00000 n
+0000244570 00000 n
+0000244764 00000 n
+0000244958 00000 n
+0000245489 00000 n
+0000240988 00000 n
+0000240160 00000 n
+0000245151 00000 n
+0000245376 00000 n
+0000250684 00000 n
+0000246827 00000 n
+0000250565 00000 n
+0000247060 00000 n
+0000247298 00000 n
+0000247179 00000 n
+0000246941 00000 n
+0000247536 00000 n
+0000247655 00000 n
+0000247774 00000 n
+0000247417 00000 n
+0000249986 00000 n
+0000250213 00000 n
+0000249753 00000 n
+0000250100 00000 n
+0000249639 00000 n
+0000248012 00000 n
+0000246595 00000 n
+0000245613 00000 n
+0000246714 00000 n
+0000249389 00000 n
+0000250745 00000 n
+0000249250 00000 n
+0000248097 00000 n
+0000249583 00000 n
+0000496538 00000 n
+0000251494 00000 n
+0000251765 00000 n
+0000251355 00000 n
+0000250856 00000 n
+0000251652 00000 n
+0000252435 00000 n
+0000256830 00000 n
+0000258679 00000 n
+0000262116 00000 n
+0000257124 00000 n
+0000252301 00000 n
+0000251852 00000 n
+0000256897 00000 n
+0000253345 00000 n
+0000253475 00000 n
+0000253615 00000 n
+0000253902 00000 n
+0000254307 00000 n
+0000254511 00000 n
+0000254532 00000 n
+0000256808 00000 n
+0000262183 00000 n
+0000262343 00000 n
+0000262537 00000 n
+0000262731 00000 n
+0000262926 00000 n
+0000263121 00000 n
+0000263315 00000 n
+0000263510 00000 n
+0000263705 00000 n
+0000263900 00000 n
+0000264095 00000 n
+0000264322 00000 n
+0000264549 00000 n
+0000264776 00000 n
+0000264999 00000 n
+0000265224 00000 n
+0000267281 00000 n
+0000267508 00000 n
+0000265734 00000 n
+0000258405 00000 n
+0000257250 00000 n
+0000265450 00000 n
+0000265506 00000 n
+0000495886 00000 n
+0000265563 00000 n
+0000265620 00000 n
+0000265677 00000 n
+0000259342 00000 n
+0000259472 00000 n
+0000259612 00000 n
+0000259863 00000 n
+0000260227 00000 n
+0000260431 00000 n
+0000260452 00000 n
+0000262094 00000 n
+0000290542 00000 n
+0000290424 00000 n
+0000293285 00000 n
+0000290075 00000 n
+0000290192 00000 n
+0000290311 00000 n
+0000289961 00000 n
+0000293461 00000 n
+0000293632 00000 n
+0000293746 00000 n
+0000293808 00000 n
+0000293870 00000 n
+0000293932 00000 n
+0000293994 00000 n
+0000267735 00000 n
+0000267958 00000 n
+0000268185 00000 n
+0000268412 00000 n
+0000268638 00000 n
+0000268865 00000 n
+0000269092 00000 n
+0000269319 00000 n
+0000269546 00000 n
+0000269773 00000 n
+0000270000 00000 n
+0000270227 00000 n
+0000270454 00000 n
+0000270681 00000 n
+0000270908 00000 n
+0000271135 00000 n
+0000271361 00000 n
+0000271586 00000 n
+0000271813 00000 n
+0000272040 00000 n
+0000272267 00000 n
+0000272494 00000 n
+0000272720 00000 n
+0000272947 00000 n
+0000273174 00000 n
+0000273400 00000 n
+0000273627 00000 n
+0000273853 00000 n
+0000274080 00000 n
+0000274307 00000 n
+0000274533 00000 n
+0000274760 00000 n
+0000274985 00000 n
+0000275178 00000 n
+0000275405 00000 n
+0000275632 00000 n
+0000275858 00000 n
+0000278661 00000 n
+0000278888 00000 n
+0000279115 00000 n
+0000276140 00000 n
+0000266838 00000 n
+0000265886 00000 n
+0000276084 00000 n
+0000294118 00000 n
+0000294180 00000 n
+0000294242 00000 n
+0000294304 00000 n
+0000294366 00000 n
+0000294428 00000 n
+0000294490 00000 n
+0000294552 00000 n
+0000294613 00000 n
+0000294675 00000 n
+0000294737 00000 n
+0000294799 00000 n
+0000297127 00000 n
+0000297189 00000 n
+0000297251 00000 n
+0000297313 00000 n
+0000297374 00000 n
+0000297436 00000 n
+0000297498 00000 n
+0000297560 00000 n
+0000297622 00000 n
+0000297684 00000 n
+0000297746 00000 n
+0000297808 00000 n
+0000297870 00000 n
+0000297932 00000 n
+0000297994 00000 n
+0000298056 00000 n
+0000298118 00000 n
+0000298180 00000 n
+0000298242 00000 n
+0000298304 00000 n
+0000298366 00000 n
+0000298428 00000 n
+0000298489 00000 n
+0000301861 00000 n
+0000301923 00000 n
+0000279342 00000 n
+0000279568 00000 n
+0000279795 00000 n
+0000280022 00000 n
+0000280249 00000 n
+0000280476 00000 n
+0000280670 00000 n
+0000280865 00000 n
+0000281058 00000 n
+0000281253 00000 n
+0000281448 00000 n
+0000281641 00000 n
+0000281836 00000 n
+0000282030 00000 n
+0000282417 00000 n
+0000282610 00000 n
+0000282805 00000 n
+0000283000 00000 n
+0000283389 00000 n
+0000283584 00000 n
+0000283779 00000 n
+0000283974 00000 n
+0000284169 00000 n
+0000284362 00000 n
+0000284548 00000 n
+0000284739 00000 n
+0000284930 00000 n
+0000285122 00000 n
+0000285317 00000 n
+0000285512 00000 n
+0000287720 00000 n
+0000287915 00000 n
+0000286013 00000 n
+0000278242 00000 n
+0000276238 00000 n
+0000285900 00000 n
+0000285956 00000 n
+0000282225 00000 n
+0000283195 00000 n
+0000285707 00000 n
+0000302047 00000 n
+0000302105 00000 n
+0000302167 00000 n
+0000302229 00000 n
+0000302291 00000 n
+0000302353 00000 n
+0000302415 00000 n
+0000302477 00000 n
+0000304369 00000 n
+0000302596 00000 n
+0000309059 00000 n
+0000326021 00000 n
+0000288110 00000 n
+0000288270 00000 n
+0000288463 00000 n
+0000288658 00000 n
+0000288817 00000 n
+0000289012 00000 n
+0000289207 00000 n
+0000289402 00000 n
+0000289597 00000 n
+0000290598 00000 n
+0000287501 00000 n
+0000286124 00000 n
+0000289791 00000 n
+0000495530 00000 n
+0000496656 00000 n
+0000309173 00000 n
+0000292783 00000 n
+0000294861 00000 n
+0000292636 00000 n
+0000290735 00000 n
+0000293172 00000 n
+0000292978 00000 n
+0000298665 00000 n
+0000296952 00000 n
+0000294985 00000 n
+0000297071 00000 n
+0000302710 00000 n
+0000301686 00000 n
+0000298763 00000 n
+0000301805 00000 n
+0000304710 00000 n
+0000304194 00000 n
+0000302821 00000 n
+0000304313 00000 n
+0000307203 00000 n
+0000306801 00000 n
+0000304821 00000 n
+0000306920 00000 n
+0000308684 00000 n
+0000308843 00000 n
+0000309455 00000 n
+0000308537 00000 n
+0000307314 00000 n
+0000309003 00000 n
+0000496774 00000 n
+0000310772 00000 n
+0000312780 00000 n
+0000317980 00000 n
+0000311285 00000 n
+0000310630 00000 n
+0000309567 00000 n
+0000310938 00000 n
+0000318047 00000 n
+0000318234 00000 n
+0000318421 00000 n
+0000318608 00000 n
+0000318795 00000 n
+0000318982 00000 n
+0000319169 00000 n
+0000319356 00000 n
+0000319543 00000 n
+0000319730 00000 n
+0000319916 00000 n
+0000320103 00000 n
+0000320289 00000 n
+0000320475 00000 n
+0000320661 00000 n
+0000320848 00000 n
+0000321034 00000 n
+0000321220 00000 n
+0000321407 00000 n
+0000321866 00000 n
+0000312460 00000 n
+0000311397 00000 n
+0000321573 00000 n
+0000321631 00000 n
+0000321690 00000 n
+0000321749 00000 n
+0000314216 00000 n
+0000314347 00000 n
+0000314490 00000 n
+0000314795 00000 n
+0000315218 00000 n
+0000315424 00000 n
+0000315446 00000 n
+0000317957 00000 n
+0000323963 00000 n
+0000324308 00000 n
+0000324425 00000 n
+0000323846 00000 n
+0000324191 00000 n
+0000326721 00000 n
+0000327556 00000 n
+0000325904 00000 n
+0000326487 00000 n
+0000326604 00000 n
+0000327673 00000 n
+0000325789 00000 n
+0000326137 00000 n
+0000326254 00000 n
+0000326370 00000 n
+0000323534 00000 n
+0000324716 00000 n
+0000323391 00000 n
+0000321993 00000 n
+0000323730 00000 n
+0000326837 00000 n
+0000325551 00000 n
+0000324828 00000 n
+0000325673 00000 n
+0000327790 00000 n
+0000327376 00000 n
+0000326936 00000 n
+0000327498 00000 n
+0000329260 00000 n
+0000329411 00000 n
+0000329561 00000 n
+0000329712 00000 n
+0000329863 00000 n
+0000330014 00000 n
+0000330165 00000 n
+0000330316 00000 n
+0000330467 00000 n
+0000330617 00000 n
+0000330768 00000 n
+0000330919 00000 n
+0000331070 00000 n
+0000331221 00000 n
+0000331372 00000 n
+0000331522 00000 n
+0000331673 00000 n
+0000331824 00000 n
+0000331975 00000 n
+0000332126 00000 n
+0000332277 00000 n
+0000332428 00000 n
+0000332578 00000 n
+0000332729 00000 n
+0000332880 00000 n
+0000333031 00000 n
+0000333182 00000 n
+0000333333 00000 n
+0000333484 00000 n
+0000333635 00000 n
+0000333786 00000 n
+0000333937 00000 n
+0000334088 00000 n
+0000334239 00000 n
+0000334390 00000 n
+0000334541 00000 n
+0000334691 00000 n
+0000334842 00000 n
+0000334993 00000 n
+0000335144 00000 n
+0000335294 00000 n
+0000335445 00000 n
+0000335596 00000 n
+0000337902 00000 n
+0000335805 00000 n
+0000328738 00000 n
+0000327876 00000 n
+0000335747 00000 n
+0000496897 00000 n
+0000338053 00000 n
+0000338204 00000 n
+0000338355 00000 n
+0000338505 00000 n
+0000338655 00000 n
+0000338806 00000 n
+0000338957 00000 n
+0000339108 00000 n
+0000339259 00000 n
+0000339410 00000 n
+0000339561 00000 n
+0000339712 00000 n
+0000339863 00000 n
+0000340014 00000 n
+0000340165 00000 n
+0000340316 00000 n
+0000340467 00000 n
+0000340618 00000 n
+0000340768 00000 n
+0000340919 00000 n
+0000341069 00000 n
+0000341219 00000 n
+0000341369 00000 n
+0000341520 00000 n
+0000341671 00000 n
+0000341821 00000 n
+0000341972 00000 n
+0000342123 00000 n
+0000342274 00000 n
+0000342424 00000 n
+0000342575 00000 n
+0000342725 00000 n
+0000342876 00000 n
+0000343026 00000 n
+0000343177 00000 n
+0000343328 00000 n
+0000343478 00000 n
+0000343628 00000 n
+0000343779 00000 n
+0000343930 00000 n
+0000344081 00000 n
+0000344232 00000 n
+0000344382 00000 n
+0000344533 00000 n
+0000344682 00000 n
+0000344833 00000 n
+0000344984 00000 n
+0000345134 00000 n
+0000345285 00000 n
+0000345435 00000 n
+0000345586 00000 n
+0000345737 00000 n
+0000345888 00000 n
+0000346038 00000 n
+0000346189 00000 n
+0000346340 00000 n
+0000346491 00000 n
+0000346642 00000 n
+0000346793 00000 n
+0000346944 00000 n
+0000347095 00000 n
+0000347246 00000 n
+0000347397 00000 n
+0000347547 00000 n
+0000347698 00000 n
+0000347849 00000 n
+0000348000 00000 n
+0000348151 00000 n
+0000348301 00000 n
+0000348451 00000 n
+0000348601 00000 n
+0000348752 00000 n
+0000348960 00000 n
+0000337110 00000 n
+0000335891 00000 n
+0000348902 00000 n
+0000350849 00000 n
+0000350999 00000 n
+0000351150 00000 n
+0000351301 00000 n
+0000351452 00000 n
+0000351603 00000 n
+0000351754 00000 n
+0000351905 00000 n
+0000352056 00000 n
+0000352206 00000 n
+0000352356 00000 n
+0000352507 00000 n
+0000352657 00000 n
+0000352806 00000 n
+0000352954 00000 n
+0000353104 00000 n
+0000353255 00000 n
+0000353406 00000 n
+0000353557 00000 n
+0000353708 00000 n
+0000353858 00000 n
+0000354008 00000 n
+0000354159 00000 n
+0000354308 00000 n
+0000354458 00000 n
+0000354609 00000 n
+0000354760 00000 n
+0000354911 00000 n
+0000355062 00000 n
+0000355213 00000 n
+0000355364 00000 n
+0000355515 00000 n
+0000355665 00000 n
+0000355816 00000 n
+0000355967 00000 n
+0000356118 00000 n
+0000356267 00000 n
+0000356417 00000 n
+0000356568 00000 n
+0000356719 00000 n
+0000356869 00000 n
+0000357019 00000 n
+0000357170 00000 n
+0000357321 00000 n
+0000357471 00000 n
+0000357622 00000 n
+0000357772 00000 n
+0000357922 00000 n
+0000358072 00000 n
+0000358222 00000 n
+0000358372 00000 n
+0000358523 00000 n
+0000358674 00000 n
+0000358825 00000 n
+0000358976 00000 n
+0000359127 00000 n
+0000359278 00000 n
+0000359428 00000 n
+0000359579 00000 n
+0000359730 00000 n
+0000359881 00000 n
+0000360032 00000 n
+0000360183 00000 n
+0000360333 00000 n
+0000360483 00000 n
+0000360634 00000 n
+0000360785 00000 n
+0000360936 00000 n
+0000361087 00000 n
+0000361238 00000 n
+0000361389 00000 n
+0000361540 00000 n
+0000362989 00000 n
+0000361749 00000 n
+0000350066 00000 n
+0000349046 00000 n
+0000361691 00000 n
+0000363140 00000 n
+0000363291 00000 n
+0000363442 00000 n
+0000363593 00000 n
+0000363744 00000 n
+0000363895 00000 n
+0000364046 00000 n
+0000364197 00000 n
+0000364347 00000 n
+0000364497 00000 n
+0000364648 00000 n
+0000364799 00000 n
+0000364950 00000 n
+0000365101 00000 n
+0000365251 00000 n
+0000365402 00000 n
+0000365552 00000 n
+0000365703 00000 n
+0000365852 00000 n
+0000366001 00000 n
+0000366151 00000 n
+0000366302 00000 n
+0000366453 00000 n
+0000366604 00000 n
+0000366755 00000 n
+0000366906 00000 n
+0000367056 00000 n
+0000367207 00000 n
+0000367357 00000 n
+0000367508 00000 n
+0000367659 00000 n
+0000367809 00000 n
+0000367960 00000 n
+0000368110 00000 n
+0000368260 00000 n
+0000368411 00000 n
+0000368620 00000 n
+0000362521 00000 n
+0000361835 00000 n
+0000368562 00000 n
+0000494133 00000 n
+0000368706 00000 n
+0000369178 00000 n
+0000369654 00000 n
+0000370255 00000 n
+0000370339 00000 n
+0000370537 00000 n
+0000370563 00000 n
+0000370951 00000 n
+0000371830 00000 n
+0000372320 00000 n
+0000383005 00000 n
+0000383270 00000 n
+0000392653 00000 n
+0000392923 00000 n
+0000400117 00000 n
+0000400356 00000 n
+0000407385 00000 n
+0000407617 00000 n
+0000425933 00000 n
+0000426479 00000 n
+0000444502 00000 n
+0000445043 00000 n
+0000459125 00000 n
+0000459501 00000 n
+0000479380 00000 n
+0000479971 00000 n
+0000493741 00000 n
+0000497004 00000 n
+0000497124 00000 n
+0000497213 00000 n
+0000497286 00000 n
+0000506443 00000 n
+0000506678 00000 n
+0000506872 00000 n
+0000507061 00000 n
+0000507371 00000 n
+0000507788 00000 n
+0000508319 00000 n
+0000508949 00000 n
+0000509744 00000 n
+0000510440 00000 n
+0000510971 00000 n
+0000511700 00000 n
+0000512495 00000 n
+0000513290 00000 n
+0000514085 00000 n
+0000514880 00000 n
+0000515675 00000 n
+0000516320 00000 n
+0000516500 00000 n
+0000516789 00000 n
+0000517254 00000 n
+0000517718 00000 n
+0000518072 00000 n
+0000518243 00000 n
+0000518413 00000 n
+0000518584 00000 n
+0000518755 00000 n
+0000518932 00000 n
+0000519100 00000 n
+0000519285 00000 n
+0000519482 00000 n
+0000519679 00000 n
+0000519877 00000 n
+0000520286 00000 n
+0000520809 00000 n
+0000521332 00000 n
+0000521748 00000 n
+0000521987 00000 n
+0000522230 00000 n
+0000522502 00000 n
+0000522793 00000 n
+0000523079 00000 n
+0000523362 00000 n
+0000523645 00000 n
+0000523930 00000 n
+0000524213 00000 n
+0000524496 00000 n
+0000524781 00000 n
+0000525064 00000 n
+0000525187 00000 n
+0000525357 00000 n
+0000525596 00000 n
+0000525792 00000 n
+0000525910 00000 n
+0000526030 00000 n
+0000526159 00000 n
+0000526298 00000 n
+0000526442 00000 n
+0000526541 00000 n
+0000526675 00000 n
+0000526787 00000 n
+0000526890 00000 n
+0000526930 00000 n
+0000527111 00000 n
trailer
<< /Size 1404
/Root 1402 0 R
/Info 1403 0 R
-/ID [<F29439B9CC44BC2F87089A748E426729> <F29439B9CC44BC2F87089A748E426729>] >>
+/ID [<F402B200711665781F0B684C4A0FC9D9> <F402B200711665781F0B684C4A0FC9D9>] >>
startxref
-527436
+527438
%%EOF
diff --git a/documentation/aacEncoder.pdf b/documentation/aacEncoder.pdf
index 2af41ae..84100eb 100644
--- a/documentation/aacEncoder.pdf
+++ b/documentation/aacEncoder.pdf
@@ -632,7 +632,11 @@ endobj
/Filter /FlateDecode
>>
stream
-x}UM6 W(ͬi,7wIvķDYl%Rud;q;@@GGW?qDGۢD%ɣ_g4uW11#<$zR7]?WwF4CŮ ѱJdK_c&+^'kxT 嗏僬Tug@SxL@L!Yf[j0/PI/c2`:eI~A%4GOH-ÜMܫ!OԮucZ .+v +BV~;M3\Gvn@KD[lj|f2~L'-6+>W-$O\ I2/!qfN.&aemUW1|CBd)1IUDp-*>FHcjUM=&8ɫ4ބ@_il2(/ʤCpK/q 3;ZpMcܐCF$Yp:1CtS?jUO JA[{?yf5k]'1ȷNad>[/V3-p!Qӳ8tL.
+x}UM6Wp1m2Ljd|KrA% !;i}riunI(8(AMI$&A^q7oP2hB9fI9w/}</n]*b_$ J}$u[XE
+Xm1AcSͥ[>ɚ5S
+i2uO2$ld?t,JH('ÜNUl~nƸ8o݉v"[<~ؕ9ۑ}\yIHpD+01_Ĩ[5UYq4sתę o򺐔$#82yB\WQqAY~[
+zn\.u1c\ َ}~JGzcQ/\~
+@Sx:Wpld@Zb}JTxFtx5 [k#bmXOwY˽;3W`b @2*̴p MW=
endstream
endobj
418 0 obj <<
@@ -8985,8 +8989,8 @@ endobj
>> endobj
1416 0 obj <<
/Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.10)/Keywords()
-/CreationDate (D:20120817142105+02'00')
-/ModDate (D:20120817142105+02'00')
+/CreationDate (D:20120927164403+02'00')
+/ModDate (D:20120927164403+02'00')
/Trapped /False
/PTEX.Fullbanner (This is pdfTeX, Version 3.1415926-1.40.10-2.2 (TeX Live 2009/Debian) kpathsea version 5.0.0)
>> endobj
@@ -10413,7 +10417,7 @@ trailer
<< /Size 1417
/Root 1415 0 R
/Info 1416 0 R
-/ID [<09BA174B99D03051E2360592CE4C1DF3> <09BA174B99D03051E2360592CE4C1DF3>] >>
+/ID [<6568D5E6D3D414DEC0C8E7A6930872CF> <6568D5E6D3D414DEC0C8E7A6930872CF>] >>
startxref
508901
%%EOF
diff --git a/libAACdec/src/aacdec_drc.cpp b/libAACdec/src/aacdec_drc.cpp
index c660b83..ebc6975 100644
--- a/libAACdec/src/aacdec_drc.cpp
+++ b/libAACdec/src/aacdec_drc.cpp
@@ -220,8 +220,9 @@ AAC_DECODER_ERROR aacDecoder_drcSetParam (
else {
/* ref_level must be between 0 and MAX_REFERENCE_LEVEL, inclusive */
self->digitalNorm = 1;
- self->progRefLevel = AACDEC_DRC_DEFAULT_REF_LEVEL;
self->params.targetRefLevel = value;
+ self->progRefLevel = (SCHAR)value; /* Set the program reference level equal to the target
+ level according to 4.5.2.7.3 of ISO/IEC 14496-3. */
}
break;
case APPLY_HEAVY_COMPRESSION:
@@ -783,6 +784,7 @@ void aacDecoder_drcApply (
{
int band, top, bin, numBands;
int bottom = 0;
+ int modifyBins = 0;
FIXP_DBL max_mantissa;
INT max_exponent;
@@ -937,6 +939,12 @@ void aacDecoder_drcApply (
if (fact_exponent[band] < max_exponent) {
fact_mantissa[band] >>= max_exponent - fact_exponent[band];
}
+ if (fact_mantissa[band] != FL2FXCONST_DBL(0.5f)) {
+ modifyBins = 1;
+ }
+ }
+ if (max_exponent != 1) {
+ modifyBins = 1;
}
}
@@ -948,23 +956,28 @@ void aacDecoder_drcApply (
{
bottom = 0;
- for (band = 0; band < numBands; band++)
+ if (!modifyBins) {
+ /* We don't have to modify the spectral bins because the fractional part of all factors is 0.5.
+ In order to keep accurancy we don't apply the factor but decrease the exponent instead. */
+ max_exponent -= 1;
+ } else
{
- top = fixMin((int)( (pDrcChData->bandTop[band]+1)<<2 ), aacFrameSize); /* ... * DRC_BAND_MULT; */
+ for (band = 0; band < numBands; band++)
+ {
+ top = fixMin((int)( (pDrcChData->bandTop[band]+1)<<2 ), aacFrameSize); /* ... * DRC_BAND_MULT; */
- for (bin = bottom; bin < top; bin++) {
- pSpectralCoefficient[bin] = fMult(pSpectralCoefficient[bin], fact_mantissa[band]);
- }
+ for (bin = bottom; bin < top; bin++) {
+ pSpectralCoefficient[bin] = fMult(pSpectralCoefficient[bin], fact_mantissa[band]);
+ }
- bottom = top;
+ bottom = top;
+ }
}
/* above topmost DRC band gain factor is 1 */
if (max_exponent > 0) {
- FIXP_DBL fact = FL2FXCONST_DBL(0.5f) >> (max_exponent - 1);
-
- for (bin = top; bin < aacFrameSize; bin++) {
- pSpectralCoefficient[bin] = fMult(pSpectralCoefficient[bin], fact);
+ for (bin = bottom; bin < aacFrameSize; bin+=1) {
+ pSpectralCoefficient[bin] >>= max_exponent;
}
}
@@ -980,12 +993,13 @@ void aacDecoder_drcApply (
}
else {
HANDLE_SBRDECODER hSbrDecoder = (HANDLE_SBRDECODER)pSbrDec;
+ UINT numBands = pDrcChData->numBands;
/* feed factors into SBR decoder for application in QMF domain. */
sbrDecoder_drcFeedChannel (
hSbrDecoder,
ch,
- pDrcChData->numBands,
+ numBands,
fact_mantissa,
max_exponent,
pDrcChData->drcInterpolationScheme,
diff --git a/libAACdec/src/aacdec_drc.h b/libAACdec/src/aacdec_drc.h
index 07e7eff..9c90e32 100644
--- a/libAACdec/src/aacdec_drc.h
+++ b/libAACdec/src/aacdec_drc.h
@@ -99,10 +99,7 @@ amm-info@iis.fraunhofer.de
#include "FDK_bitstream.h"
#define AACDEC_DRC_DEFAULT_REF_LEVEL ( 108 ) /* -27 dB below full scale (typical for movies) */
-#define AACDEC_DRC_DFLT_EXPIRY_FRAMES ( 40 ) /* Default DRC data expiry time in AAC frames */
-#define MAX_SBR_SYN_CHAN ( 64 )
-#define MAX_SBR_COLS ( 32 )
-
+#define AACDEC_DRC_DFLT_EXPIRY_FRAMES ( 50 ) /* Default DRC data expiry time in AAC frames */
/**
* \brief DRC module setting parameters
diff --git a/libAACdec/src/aacdecoder.cpp b/libAACdec/src/aacdecoder.cpp
index 2843e9f..8d3c18d 100644
--- a/libAACdec/src/aacdecoder.cpp
+++ b/libAACdec/src/aacdecoder.cpp
@@ -865,6 +865,17 @@ LINKSPEC_CPP AAC_DECODER_ERROR CAacDecoder_Init(HANDLE_AACDECODER self, const CS
self->chMapping[ch] = 255;
}
}
+ #ifdef TP_PCE_ENABLE
+ else {
+ if (CProgramConfig_IsValid(&asc->m_progrConfigElement)) {
+ /* Set matrix mixdown infos if available from PCE. */
+ pcmDmx_SetMatrixMixdownFromPce ( self->hPcmUtils,
+ asc->m_progrConfigElement.MatrixMixdownIndexPresent,
+ asc->m_progrConfigElement.MatrixMixdownIndex,
+ asc->m_progrConfigElement.PseudoSurroundEnable );
+ }
+ }
+ #endif
self->streamInfo.channelConfig = asc->m_channelConfiguration;
@@ -1565,7 +1576,7 @@ LINKSPEC_CPP AAC_DECODER_ERROR CAacDecoder_DecodeFrame(
self->streamInfo.numChannels = aacChannels;
#ifdef TP_PCE_ENABLE
- if (pceRead == 1 || CProgramConfig_IsValid(pce)) {
+ if (pceRead == 1 && CProgramConfig_IsValid(pce)) {
/* Set matrix mixdown infos if available from PCE. */
pcmDmx_SetMatrixMixdownFromPce ( self->hPcmUtils,
pce->MatrixMixdownIndexPresent,
@@ -1673,7 +1684,7 @@ LINKSPEC_CPP AAC_DECODER_ERROR CAacDecoder_DecodeFrame(
break;
}
if ( flags&AACDEC_FLUSH ) {
- FDKmemclear(pAacDecoderChannelInfo->pSpectralCoefficient, sizeof(FIXP_DBL)*self->streamInfo.aacSamplesPerFrame);
+ FDKmemclear(pAacDecoderChannelInfo->pSpectralCoefficient, sizeof(FIXP_DBL)*self->streamInfo.aacSamplesPerFrame);
FDKmemclear(self->pAacDecoderStaticChannelInfo[c]->pOverlapBuffer, OverlapBufferSize*sizeof(FIXP_DBL));
}
}
diff --git a/libAACdec/src/aacdecoder_lib.cpp b/libAACdec/src/aacdecoder_lib.cpp
index 87f9ab0..a3db39e 100644
--- a/libAACdec/src/aacdecoder_lib.cpp
+++ b/libAACdec/src/aacdecoder_lib.cpp
@@ -110,7 +110,7 @@ amm-info@iis.fraunhofer.de
/* Decoder library info */
#define AACDECODER_LIB_VL0 2
#define AACDECODER_LIB_VL1 4
-#define AACDECODER_LIB_VL2 5
+#define AACDECODER_LIB_VL2 7
#define AACDECODER_LIB_TITLE "AAC Decoder Lib"
#define AACDECODER_LIB_BUILD_DATE __DATE__
#define AACDECODER_LIB_BUILD_TIME __TIME__
diff --git a/libAACenc/src/aacenc_lib.cpp b/libAACenc/src/aacenc_lib.cpp
index a245358..07cfddc 100644
--- a/libAACenc/src/aacenc_lib.cpp
+++ b/libAACenc/src/aacenc_lib.cpp
@@ -98,7 +98,7 @@ amm-info@iis.fraunhofer.de
/* Encoder library info */
#define AACENCODER_LIB_VL0 3
#define AACENCODER_LIB_VL1 3
-#define AACENCODER_LIB_VL2 2
+#define AACENCODER_LIB_VL2 3
#define AACENCODER_LIB_TITLE "AAC Encoder"
#define AACENCODER_LIB_BUILD_DATE __DATE__
#define AACENCODER_LIB_BUILD_TIME __TIME__
diff --git a/libAACenc/src/band_nrg.cpp b/libAACenc/src/band_nrg.cpp
index 458aa9c..0e46b45 100644
--- a/libAACenc/src/band_nrg.cpp
+++ b/libAACenc/src/band_nrg.cpp
@@ -260,21 +260,21 @@ FDKaacEnc_CalcBandEnergyOptimShort(const FIXP_DBL *RESTRICT mdctSpectrum,
for(i=0; i<numBands; i++)
{
- int leadingBits = fixMax(0,sfbMaxScaleSpec[i]-4); /* max sfbWidth = 96 ; 2^7=128 => 7/2 = 4 (spc*spc) */
+ int leadingBits = sfbMaxScaleSpec[i]-3; /* max sfbWidth = 36 ; 2^6=64 => 6/2 = 3 (spc*spc) */
FIXP_DBL tmp = FL2FXCONST_DBL(0.0);
for (j=bandOffset[i];j<bandOffset[i+1];j++)
{
- FIXP_DBL spec = mdctSpectrum[j]<<leadingBits;
+ FIXP_DBL spec = scaleValue(mdctSpectrum[j],leadingBits);
tmp = fPow2AddDiv2(tmp, spec);
}
- bandEnergy[i] = tmp<<1;
+ bandEnergy[i] = tmp;
}
for(i=0; i<numBands; i++)
{
- INT scale = 2*fixMax(0,sfbMaxScaleSpec[i]-4); /* max sfbWidth = 96 ; 2^7=128 => 7/2 = 4 (spc*spc) */
- scale = fixMin(scale,(DFRACT_BITS-1));
- bandEnergy[i] >>= scale;
+ INT scale = (2*(sfbMaxScaleSpec[i]-3))-1; /* max sfbWidth = 36 ; 2^6=64 => 6/2 = 3 (spc*spc) */
+ scale = fixMax(fixMin(scale,(DFRACT_BITS-1)),-(DFRACT_BITS-1));
+ bandEnergy[i] = scaleValueSaturate(bandEnergy[i], -scale);
}
}
@@ -343,7 +343,7 @@ void FDKaacEnc_CalcBandNrgMSOpt(const FIXP_DBL *RESTRICT mdctSpectrumLeft,
{
/* using the minimal scaling of left and right channel can cause very small energies;
check ldNrg before subtract scaling multiplication: fract*INT we don't need fMult */
-
+
int minus = scale*FL2FXCONST_DBL(1.0/64);
if (bandEnergyMidLdData[i] != FL2FXCONST_DBL(-1.0f))
diff --git a/libAACenc/src/line_pe.cpp b/libAACenc/src/line_pe.cpp
index ed5ee7f..7014bcb 100644
--- a/libAACenc/src/line_pe.cpp
+++ b/libAACenc/src/line_pe.cpp
@@ -122,6 +122,8 @@ void FDKaacEnc_prepareSfbPe(PE_CHANNEL_DATA *peChanData,
avgFormFactorLdData = ((-sfbEnergyLdData[sfbGrp+sfb]>>1) + (CalcLdInt(sfbWidth)>>1))>>1;
peChanData->sfbNLines[sfbGrp+sfb] =
(INT)CalcInvLdData( (sfbFormFactorLdData[sfbGrp+sfb] + formFacScaling) + avgFormFactorLdData);
+ /* Make sure sfbNLines is never greater than sfbWidth due to unaccuracies (e.g. sfbEnergyLdData[sfbGrp+sfb] = 0x80000000) */
+ peChanData->sfbNLines[sfbGrp+sfb] = fMin(sfbWidth, peChanData->sfbNLines[sfbGrp+sfb]);
}
else {
peChanData->sfbNLines[sfbGrp+sfb] = 0;
diff --git a/libAACenc/src/tns_param.cpp b/libAACenc/src/tns_param.cpp
deleted file mode 100644
index 3c04c51..0000000
--- a/libAACenc/src/tns_param.cpp
+++ /dev/null
@@ -1,93 +0,0 @@
-
-/* -----------------------------------------------------------------------------------------------------------
-Software License for The Fraunhofer FDK AAC Codec Library for Android
-
- Copyright 1995 - 2012 Fraunhofer-Gesellschaft zur Frderung der angewandten Forschung e.V.
- All rights reserved.
-
- 1. INTRODUCTION
-The Fraunhofer FDK AAC Codec Library for Android ("FDK AAC Codec") is software that implements
-the MPEG Advanced Audio Coding ("AAC") encoding and decoding scheme for digital audio.
-This FDK AAC Codec software is intended to be used on a wide variety of Android devices.
-
-AAC's HE-AAC and HE-AAC v2 versions are regarded as today's most efficient general perceptual
-audio codecs. AAC-ELD is considered the best-performing full-bandwidth communications codec by
-independent studies and is widely deployed. AAC has been standardized by ISO and IEC as part
-of the MPEG specifications.
-
-Patent licenses for necessary patent claims for the FDK AAC Codec (including those of Fraunhofer)
-may be obtained through Via Licensing (www.vialicensing.com) or through the respective patent owners
-individually for the purpose of encoding or decoding bit streams in products that are compliant with
-the ISO/IEC MPEG audio standards. Please note that most manufacturers of Android devices already license
-these patent claims through Via Licensing or directly from the patent owners, and therefore FDK AAC Codec
-software may already be covered under those patent licenses when it is used for those licensed purposes only.
-
-Commercially-licensed AAC software libraries, including floating-point versions with enhanced sound quality,
-are also available from Fraunhofer. Users are encouraged to check the Fraunhofer website for additional
-applications information and documentation.
-
-2. COPYRIGHT LICENSE
-
-Redistribution and use in source and binary forms, with or without modification, are permitted without
-payment of copyright license fees provided that you satisfy the following conditions:
-
-You must retain the complete text of this software license in redistributions of the FDK AAC Codec or
-your modifications thereto in source code form.
-
-You must retain the complete text of this software license in the documentation and/or other materials
-provided with redistributions of the FDK AAC Codec or your modifications thereto in binary form.
-You must make available free of charge copies of the complete source code of the FDK AAC Codec and your
-modifications thereto to recipients of copies in binary form.
-
-The name of Fraunhofer may not be used to endorse or promote products derived from this library without
-prior written permission.
-
-You may not charge copyright license fees for anyone to use, copy or distribute the FDK AAC Codec
-software or your modifications thereto.
-
-Your modified versions of the FDK AAC Codec must carry prominent notices stating that you changed the software
-and the date of any change. For modified versions of the FDK AAC Codec, the term
-"Fraunhofer FDK AAC Codec Library for Android" must be replaced by the term
-"Third-Party Modified Version of the Fraunhofer FDK AAC Codec Library for Android."
-
-3. NO PATENT LICENSE
-
-NO EXPRESS OR IMPLIED LICENSES TO ANY PATENT CLAIMS, including without limitation the patents of Fraunhofer,
-ARE GRANTED BY THIS SOFTWARE LICENSE. Fraunhofer provides no warranty of patent non-infringement with
-respect to this software.
-
-You may use this FDK AAC Codec software or modifications thereto only for purposes that are authorized
-by appropriate patent licenses.
-
-4. DISCLAIMER
-
-This FDK AAC Codec software is provided by Fraunhofer on behalf of the copyright holders and contributors
-"AS IS" and WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, including but not limited to the implied warranties
-of merchantability and fitness for a particular purpose. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-CONTRIBUTORS BE LIABLE for any direct, indirect, incidental, special, exemplary, or consequential damages,
-including but not limited to procurement of substitute goods or services; loss of use, data, or profits,
-or business interruption, however caused and on any theory of liability, whether in contract, strict
-liability, or tort (including negligence), arising in any way out of the use of this software, even if
-advised of the possibility of such damage.
-
-5. CONTACT INFORMATION
-
-Fraunhofer Institute for Integrated Circuits IIS
-Attention: Audio and Multimedia Departments - FDK AAC LL
-Am Wolfsmantel 33
-91058 Erlangen, Germany
-
-www.iis.fraunhofer.de/amm
-amm-info@iis.fraunhofer.de
------------------------------------------------------------------------------------------------------------ */
-
-/******************************** MPEG Audio Encoder **************************
-
- Initial author: M.Werner
- contents/description: TNS parameters
-
-******************************************************************************/
-
-#include "tns_param.h"
-
-
diff --git a/libFDK/include/FDK_archdef.h b/libFDK/include/FDK_archdef.h
index 22ec0ed..a963f55 100644
--- a/libFDK/include/FDK_archdef.h
+++ b/libFDK/include/FDK_archdef.h
@@ -155,7 +155,6 @@ amm-info@iis.fraunhofer.de
#endif
-
/* Define preferred Multiplication type */
#if defined(FDK_HIGH_PERFORMANCE) && !defined(FDK_HIGH_QUALITY) /* FDK_HIGH_PERFORMANCE */
diff --git a/libFDK/include/clz.h b/libFDK/include/clz.h
index 90cdb2b..38c5073 100644
--- a/libFDK/include/clz.h
+++ b/libFDK/include/clz.h
@@ -100,6 +100,9 @@ amm-info@iis.fraunhofer.de
#elif defined(__mips__) /* cppp replaced: elif */
#include "mips/clz_mips.h"
+#elif defined(__x86__) /* cppp replaced: elif */
+#include "x86/clz_x86.h"
+
#endif /* all cores */
diff --git a/libFDK/include/mips/cplx_mul.h b/libFDK/include/mips/cplx_mul.h
index 4e8f26f..fb777ce 100644
--- a/libFDK/include/mips/cplx_mul.h
+++ b/libFDK/include/mips/cplx_mul.h
@@ -107,10 +107,23 @@ inline void cplxMultDiv2( FIXP_DBL *c_Re,
FIXP_DBL b_Re,
FIXP_DBL b_Im)
{
- INT result;
- result = (((long long)a_Re * b_Re) - ((long long) a_Im * b_Im)) >> 32;
+ INT result;
+
+ __asm__ ("mult %[a_Re], %[b_Re];\n"
+ "msub %[a_Im], %[b_Im];\n"
+ "mfhi %[result];\n"
+ : [result]"=r"(result)
+ : [a_Re]"d"(a_Re), [b_Re]"d"(b_Re), [a_Im]"d"(a_Im), [b_Im]"d"(b_Im)
+ : "lo");
+
*c_Re = result;
- result = (((long long)a_Re * b_Im) - ((long long) a_Im * b_Re)) >> 32;
+
+ __asm__ ("mult %[a_Re], %[b_Im];\n"
+ "madd %[a_Im], %[b_Re];\n"
+ "mfhi %[result];\n"
+ : [result]"=r"(result)
+ : [a_Re]"r"(a_Re), [b_Im]"r"(b_Im), [a_Im]"r"(a_Im), [b_Re]"r"(b_Re)
+ : "lo");
*c_Im = result;
}
#endif
@@ -123,10 +136,24 @@ inline void cplxMult( FIXP_DBL *c_Re,
FIXP_DBL b_Re,
FIXP_DBL b_Im)
{
- INT result;
- result = (((long long)a_Re * b_Re) - ((long long) a_Im * b_Im)) >> 32;
+ INT result;
+
+ __asm__ ("mult %[a_Re], %[b_Re];\n"
+ "msub %[a_Im], %[b_Im];\n"
+ "mfhi %[result];\n"
+ //"extr_w %[result], 31;\n"
+ : [result]"=r"(result)
+ : [a_Re]"r"(a_Re), [b_Re]"r"(b_Re), [a_Im]"r"(a_Im), [b_Im]"r"(b_Im)
+ : "lo");
*c_Re = result<<1;
- result = (((long long)a_Re * b_Im) - ((long long) a_Im * b_Re)) >> 32;
+
+ __asm__ ("mult %[a_Re], %[b_Im];\n"
+ "madd %[a_Im], %[b_Re];\n"
+ "mfhi %[result];\n"
+ //"extr_w %[result], 31;\n"
+ : [result]"=r"(result)
+ : [a_Re]"r"(a_Re), [b_Im]"r"(b_Im), [a_Im]"r"(a_Im), [b_Re]"r"(b_Re)
+ : "lo");
*c_Im = result<<1;
}
#endif
diff --git a/libFDK/include/mips/fixmul_mips.h b/libFDK/include/mips/fixmul_mips.h
index 0e7af0d..62d059e 100644
--- a/libFDK/include/mips/fixmul_mips.h
+++ b/libFDK/include/mips/fixmul_mips.h
@@ -100,11 +100,14 @@ amm-info@iis.fraunhofer.de
inline INT fixmuldiv2_DD (const INT a, const INT b)
{
-
- return ((long long) a * b) >> 32;
+ INT result ;
+ result = ((long long)a * b)>>32;
+ return result ;
}
#endif /* (__GNUC__) && defined(__mips__) */
#endif /* __mips__ */
+#define FUNCTION_fixmulBitExact_DD
+#define fixmulBitExact_DD fixmul_DD
diff --git a/libAACenc/src/tns_param.h b/libFDK/include/x86/clz_x86.h
index b191b5c..db7970d 100644
--- a/libAACenc/src/tns_param.h
+++ b/libFDK/include/x86/clz_x86.h
@@ -81,16 +81,74 @@ www.iis.fraunhofer.de/amm
amm-info@iis.fraunhofer.de
----------------------------------------------------------------------------------------------------------- */
-/******************************** MPEG Audio Encoder **************************
+/*************************** Fraunhofer IIS FDK Tools **********************
- Initial author: Alex Goeschel
- contents/description: Temporal noise shaping
+ Author(s):
+ Description: fixed point intrinsics
******************************************************************************/
-#ifndef _TNS_PARAM_H
-#define _TNS_PARAM_H
-
-
-
-#endif /* _TNS_PARAM_H */
+#if defined(__GNUC__) && (defined(__x86__) || defined(__x86_64__))
+
+ #define FUNCTION_fixnormz_D
+ #define FUNCTION_fixnorm_D
+
+ inline INT fixnormz_D(LONG value)
+ {
+ INT result;
+
+ if (value != 0) {
+ result = __builtin_clz(value);
+ } else {
+ result = 32;
+ }
+ return result;
+ }
+
+ inline INT fixnorm_D(LONG value)
+ {
+ INT result;
+ if (value == 0) {
+ return 0;
+ }
+ if (value < 0) {
+ value = ~value;
+ }
+ result = fixnormz_D(value);
+ return result - 1;
+ }
+
+
+#elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64))
+
+#include <intrin.h>
+
+ #define FUNCTION_fixnormz_D
+ #define FUNCTION_fixnorm_D
+
+ inline INT fixnormz_D(LONG value)
+ {
+ unsigned long result = 0;
+ unsigned char err;
+ err = _BitScanReverse(&result, value);
+ if (err) {
+ return 31 - result;
+ } else {
+ return 32;
+ }
+ }
+
+ inline INT fixnorm_D(LONG value)
+ {
+ INT result;
+ if (value == 0) {
+ return 0;
+ }
+ if (value < 0) {
+ value = ~value;
+ }
+ result = fixnormz_D(value);
+ return result - 1;
+ }
+
+#endif /* toolchain */
diff --git a/libFDK/src/FDK_core.cpp b/libFDK/src/FDK_core.cpp
index 98a051f..8a07aa9 100644
--- a/libFDK/src/FDK_core.cpp
+++ b/libFDK/src/FDK_core.cpp
@@ -93,7 +93,7 @@ amm-info@iis.fraunhofer.de
/* FDK tools library info */
#define FDK_TOOLS_LIB_VL0 2
#define FDK_TOOLS_LIB_VL1 2
-#define FDK_TOOLS_LIB_VL2 7
+#define FDK_TOOLS_LIB_VL2 8
#define FDK_TOOLS_LIB_TITLE "FDK Tools"
#define FDK_TOOLS_LIB_BUILD_DATE __DATE__
#define FDK_TOOLS_LIB_BUILD_TIME __TIME__
diff --git a/libPCMutils/src/pcmutils_lib.cpp b/libPCMutils/src/pcmutils_lib.cpp
index 4272548..e0a9817 100644
--- a/libPCMutils/src/pcmutils_lib.cpp
+++ b/libPCMutils/src/pcmutils_lib.cpp
@@ -96,7 +96,7 @@ amm-info@iis.fraunhofer.de
/* Decoder library info */
#define PCMDMX_LIB_VL0 2
-#define PCMDMX_LIB_VL1 2
+#define PCMDMX_LIB_VL1 3
#define PCMDMX_LIB_VL2 1
#define PCMDMX_LIB_TITLE "PCM Downmix Lib"
#define PCMDMX_LIB_BUILD_DATE __DATE__
@@ -107,7 +107,7 @@ amm-info@iis.fraunhofer.de
#define PCM_DMX_MAX_CHANNELS ( 8 )
#define PCM_DMX_MAX_CHANNEL_GROUPS ( 4 )
#define PCM_DMX_MAX_CHANNELS_PER_GROUP ( 3 ) /* The maximum over all groups */
-#define PCMDMX_DFLT_EXPIRY_FRAME ( 40 ) /* At least 400ms (FL 960 @ 96kHz) */
+#define PCMDMX_DFLT_EXPIRY_FRAME ( 50 ) /* At least 500ms (FL 960 @ 96kHz) */
/* Fixed and unique channel group indices.
* The last group index has to be smaller than PCM_DMX_MAX_CHANNEL_GROUPS. */
@@ -264,7 +264,6 @@ C_ALLOC_MEM_STATIC(PcmDmxInstance, struct PCM_DMX_INSTANCE, 1)
* @param [in] The total number of channels of the given configuration.
* @param [in] Array holding the corresponding channel types for each channel.
* @param [in] Array holding the corresponding channel type indices for each channel.
- * @param [in] Array containing the channel mapping to be used (From MPEG PCE ordering to whatever is required).
* @param [out] Array where the buffer offsets for each channel are stored into.
* @returns Returns the packed channel mode.
**/
@@ -273,7 +272,6 @@ PCM_DMX_CHANNEL_MODE getChannelMode (
const INT numChannels, /* in */
const AUDIO_CHANNEL_TYPE channelType[], /* in */
const UCHAR channelIndices[], /* in */
- const UCHAR channelMapping[PCM_DMX_MAX_CHANNELS], /* in */
UCHAR offsetTable[PCM_DMX_MAX_CHANNELS] /* out */
)
{
@@ -284,12 +282,12 @@ PCM_DMX_CHANNEL_MODE getChannelMode (
FDK_ASSERT(channelType != NULL);
FDK_ASSERT(channelIndices != NULL);
- FDK_ASSERT(channelMapping != NULL);
FDK_ASSERT(offsetTable != NULL);
/* For details see ISO/IEC 13818-7:2005(E), 8.5.3 Channel configuration */
FDKmemclear(numChInGrp, PCM_DMX_MAX_CHANNEL_GROUPS*sizeof(UCHAR));
FDKmemset(offsetTable, 255, PCM_DMX_MAX_CHANNELS*sizeof(UCHAR));
+ FDKmemset(chIdx, 255, PCM_DMX_MAX_CHANNEL_GROUPS*PCM_DMX_MAX_CHANNELS_PER_GROUP*sizeof(UCHAR));
/* Categorize channels */
for (ch = 0; ch < numChannels; ch += 1) {
@@ -335,7 +333,7 @@ PCM_DMX_CHANNEL_MODE getChannelMode (
if (numChInGrp[CH_GROUP_FRONT] & 0x1) {
/* Odd number of front channels -> we have a center channel.
In MPEG-4 the center has the index 0. */
- offsetTable[CENTER_FRONT_CHANNEL] = channelMapping[chIdx[CH_GROUP_FRONT][0]];
+ offsetTable[CENTER_FRONT_CHANNEL] = chIdx[CH_GROUP_FRONT][0];
}
for (grpIdx = 0; grpIdx < PCM_DMX_MAX_CHANNEL_GROUPS; grpIdx += 1) {
@@ -367,7 +365,7 @@ PCM_DMX_CHANNEL_MODE getChannelMode (
for ( ; ch < numChInGrp[grpIdx]; ch += 1) {
if (ch < maxChannels) {
- offsetTable[chMapPos] = channelMapping[chIdx[grpIdx][ch]];
+ offsetTable[chMapPos] = chIdx[grpIdx][ch];
chMapPos += 1;
} else {
err = -1;
@@ -814,7 +812,6 @@ PCMDMX_ERROR pcmDmx_ApplyFrame (
numInChannels,
channelType,
channelIndices,
- channelMapping[numInChannels],
inOffsetTable
);
if (inChMode == CH_MODE_UNDEFINED) {
diff --git a/libSBRdec/src/sbr_dec.cpp b/libSBRdec/src/sbr_dec.cpp
index 5a8b320..bd3cd10 100644
--- a/libSBRdec/src/sbr_dec.cpp
+++ b/libSBRdec/src/sbr_dec.cpp
@@ -585,14 +585,16 @@ sbr_dec ( HANDLE_SBR_DEC hSbrDec, /*!< handle to Decoder channel */
int maxShift = 0;
- if (hSbrDec->sbrDrcChannel.prevFact_exp > maxShift) {
- maxShift = hSbrDec->sbrDrcChannel.prevFact_exp;
- }
- if (hSbrDec->sbrDrcChannel.currFact_exp > maxShift) {
- maxShift = hSbrDec->sbrDrcChannel.currFact_exp;
- }
- if (hSbrDec->sbrDrcChannel.nextFact_exp > maxShift) {
- maxShift = hSbrDec->sbrDrcChannel.nextFact_exp;
+ if (hSbrDec->sbrDrcChannel.enable != 0) {
+ if (hSbrDec->sbrDrcChannel.prevFact_exp > maxShift) {
+ maxShift = hSbrDec->sbrDrcChannel.prevFact_exp;
+ }
+ if (hSbrDec->sbrDrcChannel.currFact_exp > maxShift) {
+ maxShift = hSbrDec->sbrDrcChannel.currFact_exp;
+ }
+ if (hSbrDec->sbrDrcChannel.nextFact_exp > maxShift) {
+ maxShift = hSbrDec->sbrDrcChannel.nextFact_exp;
+ }
}
/* copy DRC data to right channel (with PS both channels use the same DRC gains) */
diff --git a/libSBRdec/src/sbrdec_drc.cpp b/libSBRdec/src/sbrdec_drc.cpp
index ce5247a..7497b66 100644
--- a/libSBRdec/src/sbrdec_drc.cpp
+++ b/libSBRdec/src/sbrdec_drc.cpp
@@ -115,17 +115,17 @@ void sbrDecoder_drcInitChannel (
}
for (band = 0; band < (64); band++) {
- hDrcData->prevFact_mag[band] = (FIXP_DBL)MAXVAL_DBL /*FL2FXCONST_DBL(1.0f)*/;
+ hDrcData->prevFact_mag[band] = FL2FXCONST_DBL(0.5f);
}
for (band = 0; band < SBRDEC_MAX_DRC_BANDS; band++) {
- hDrcData->currFact_mag[band] = (FIXP_DBL)MAXVAL_DBL /*FL2FXCONST_DBL(1.0f)*/;
- hDrcData->nextFact_mag[band] = (FIXP_DBL)MAXVAL_DBL /*FL2FXCONST_DBL(1.0f)*/;
+ hDrcData->currFact_mag[band] = FL2FXCONST_DBL(0.5f);
+ hDrcData->nextFact_mag[band] = FL2FXCONST_DBL(0.5f);
}
- hDrcData->prevFact_exp = 0;
- hDrcData->currFact_exp = 0;
- hDrcData->nextFact_exp = 0;
+ hDrcData->prevFact_exp = 1;
+ hDrcData->currFact_exp = 1;
+ hDrcData->nextFact_exp = 1;
hDrcData->numBandsCurr = 0;
hDrcData->numBandsNext = 0;
@@ -238,7 +238,7 @@ void sbrDecoder_drcApplySlot (
}
else {
if (j >= offset[hDrcData->drcInterpolationSchemeCurr - 1]) {
- alphaValue = FL2FXCONST_DBL(1.0f);
+ alphaValue = (FIXP_DBL)MAXVAL_DBL;
}
}
}
@@ -262,7 +262,7 @@ void sbrDecoder_drcApplySlot (
}
else {
if (j >= offset[hDrcData->drcInterpolationSchemeNext - 1]) {
- alphaValue = FL2FXCONST_DBL(1.0f);
+ alphaValue = (FIXP_DBL)MAXVAL_DBL;
}
}
@@ -301,7 +301,7 @@ void sbrDecoder_drcApplySlot (
}
else {
if (j >= offset[hDrcData->drcInterpolationSchemeNext - 1]) {
- alphaValue = FL2FXCONST_DBL(1.0f);
+ alphaValue = (FIXP_DBL)MAXVAL_DBL;
}
}
}
@@ -322,7 +322,7 @@ void sbrDecoder_drcApplySlot (
for (band = 0; band < (int)numBands; band++) {
int bottomQmf, topQmf;
- FIXP_DBL drcFact_mag = FL2FXCONST_DBL(1.0f);
+ FIXP_DBL drcFact_mag = (FIXP_DBL)MAXVAL_DBL;
topMdct = (bandTop[band]+1) << 2;
@@ -361,7 +361,13 @@ void sbrDecoder_drcApplySlot (
}
/* interpolate */
- drcFact_mag = fMult(alphaValue, drcFact2_mag) + fMult((FL2FXCONST_DBL(1.0f) - alphaValue), drcFact1_mag);
+ if (alphaValue == (FIXP_DBL)0) {
+ drcFact_mag = drcFact1_mag;
+ } else if (alphaValue == (FIXP_DBL)MAXVAL_DBL) {
+ drcFact_mag = drcFact2_mag;
+ } else {
+ drcFact_mag = fMult(alphaValue, drcFact2_mag) + fMult(((FIXP_DBL)MAXVAL_DBL - alphaValue), drcFact1_mag);
+ }
/* apply scaling */
qmfRealSlot[bin] = fMult(qmfRealSlot[bin], drcFact_mag);
@@ -481,6 +487,15 @@ void sbrDecoder_drcApply (
int col;
int maxShift = 0;
+ if (hDrcData == NULL) {
+ return;
+ }
+ if ( (hDrcData->enable == 0)
+ || ((hDrcData->numBandsCurr == 0) && (hDrcData->numBandsNext == 0))
+ ) {
+ return; /* Avoid changing the scaleFactor even though the processing is disabled. */
+ }
+
/* get max scale factor */
if (hDrcData->prevFact_exp > maxShift) {
maxShift = hDrcData->prevFact_exp;
diff --git a/libSBRdec/src/sbrdec_drc.h b/libSBRdec/src/sbrdec_drc.h
index 2577e89..14deff7 100644
--- a/libSBRdec/src/sbrdec_drc.h
+++ b/libSBRdec/src/sbrdec_drc.h
@@ -94,6 +94,7 @@ amm-info@iis.fraunhofer.de
#include "sbrdecoder.h"
+
#define SBRDEC_MAX_DRC_CHANNELS (6)
#define SBRDEC_MAX_DRC_BANDS ( 16 )
diff --git a/libSBRdec/src/sbrdecoder.cpp b/libSBRdec/src/sbrdecoder.cpp
index a40e5ba..192bdd2 100644
--- a/libSBRdec/src/sbrdecoder.cpp
+++ b/libSBRdec/src/sbrdecoder.cpp
@@ -137,7 +137,7 @@ amm-info@iis.fraunhofer.de
/* Decoder library info */
#define SBRDECODER_LIB_VL0 2
#define SBRDECODER_LIB_VL1 1
-#define SBRDECODER_LIB_VL2 2
+#define SBRDECODER_LIB_VL2 3
#define SBRDECODER_LIB_TITLE "SBR Decoder"
#define SBRDECODER_LIB_BUILD_DATE __DATE__
#define SBRDECODER_LIB_BUILD_TIME __TIME__
@@ -533,7 +533,7 @@ SBR_ERROR sbrDecoder_InitElement (
FDKmemclear(self->pSbrElement[elementIndex]->frameErrorFlag, ((1)+1)*sizeof(UCHAR));
/* Initialize this instance */
- sbrError = sbrDecoder_ResetElement(
+ sbrError = sbrDecoder_ResetElement(
self,
sampleRateIn,
sampleRateOut,
@@ -577,7 +577,7 @@ SBR_ERROR sbrDecoder_HeaderUpdate(
)
{
SBR_ERROR errorStatus = SBRDEC_OK;
-
+
/*
change of control data, reset decoder
*/
@@ -818,6 +818,7 @@ SBR_ERROR sbrDecoder_drcFeedChannel ( HANDLE_SBRDECODER self,
USHORT *pBandTop )
{
SBRDEC_DRC_CHANNEL *pSbrDrcChannelData = NULL;
+ int band, isValidData = 0;
if (self == NULL) {
return SBRDEC_NOT_INITIALIZED;
@@ -826,10 +827,21 @@ SBR_ERROR sbrDecoder_drcFeedChannel ( HANDLE_SBRDECODER self,
return SBRDEC_SET_PARAM_FAIL;
}
+ /* Search for gain values different to 1.0f */
+ for (band = 0; band < numBands; band += 1) {
+ if ( !((pNextFact_mag[band] == FL2FXCONST_DBL(0.5)) && (nextFact_exp == 1))
+ && !((pNextFact_mag[band] == (FIXP_DBL)MAXVAL_DBL) && (nextFact_exp == 0)) ) {
+ isValidData = 1;
+ break;
+ }
+ }
+
/* Find the right SBR channel */
pSbrDrcChannelData = sbrDecoder_drcGetChannel( self, ch );
if ( pSbrDrcChannelData != NULL ) {
+ if ( pSbrDrcChannelData->enable || isValidData )
+ { /* Activate processing only with real and valid data */
int i;
pSbrDrcChannelData->enable = 1;
@@ -844,6 +856,7 @@ SBR_ERROR sbrDecoder_drcFeedChannel ( HANDLE_SBRDECODER self,
pSbrDrcChannelData->nextFact_mag[i] = pNextFact_mag[i];
}
}
+ }
return SBRDEC_OK;
}