SCFMpattern paragraph style default tab maximum page size arrow size slide show script template name circle old arc rectangle old text block 3D viewer polygon old group rounded rect new page image text block arc note page tab count token table current item numberaudio clip old templates encapsulated PS current page numbertemplates version string page image back pointer font name !inventor 3D object "live video frame #Japanese text block$version code %group &starting script 'ending script (I18N text block )page table *linked text table +item id table $ (This file created by IRIS Showcase 3.4 &-5./run_movie.sh airflowford.mv$ UUUUUUUUUUUUUUUU$"A@AHAB%@LHAB@LHABS@LHB@L4AB.?1 BS@LH!H"AB@LG#BBp@K@G$AB@L2%B@L2&B.?1'AB@L4 $ Helvetica Helvetica <Helvetica-BoldObliqueHelvetica-BoldOblique ,Helvetica-BoldHelvetica-Bold $ ZapfDingbatsSymbol SymbolSymbolh?  0p hz Z?X Z?XDC( ? ZC( DC( D?X Z?X3\ hvC#fC#fDDWE?DDWEDWEC#f? ?#DC#f? ?#3]D h{DDu{ANDV DDuz?Ġp>?DDuz? [[[hBd(DSBd(DSDDU ?DDUBd(DUBd(DSDDS2CM*X ???hB\DT8RB\DT8RD}DVkq?D}DVkq>H??B\DVkq>@>?B\DT8R>@>?D}DT8R>H??2\CM*X 1F hC#fC#fDDWE?DDWEDWEC#f? ?#DC#f? ?#2CM*X hDZ+Du{ANDV DZ/Duz?Ģ?DZ/Duz? h Z?X Z?XDC( ? ZC( DC( D?X Z?X2$CM*X [[[hBd(DSBd(DSDDU ?DDUBd(DUBd(DSDDS2H??B\DVkq>@>?B\DT8R>@>?D}DT8R>H??2ԠCajX 2F h>Dw >>DO5Dw ?DxG?>Dw ? ???hB\DT8RB\DT8RD}DVkq?D}DVkq>H??B\DVkq>@>?B\DT8R>@>?D}DT8R>H??3YCh*X 3F h6nDw$6n䒀DDw$?Dnx?6nDw$? ???hB\DT8RB\DT8RD}DVkq?D}DVkq>H??B\DVkq>@>?B\DT8R>@>?D}DT8R>H??3ZCh*W T 0Fhhh"CpYdD!LCpYdB HDېD!I"?Y???CpYdB H?  >=>Media Synchronizationwith UST and UST/MSC  Chris PirazziDigital Mediacpirazzi@sgi.comhttp://reality.sgi.com/ employees/cpirazzi 1FhhhC\ DJC\ D:DpcDJ"?W???C\ D:?  >=>What UST Support Does  >=>`hhhCcCD/BfCcCA4D3D/Bf"@U???CcCA4?  >=>l  Measures time when data came in an electrical input jack  >=>l  Measures/schedules time when data will go out an electrical output jack  >=>l  All times given on UST timeline: - Universal System Time - Unadjusted System Time 1FhhhC\ DJC\ D*DbN DJ"?T???C\ D*?  >=>What You Can Do withUST Support  >=>ThhhCcCD{CcCA4DnD{"@R???CcCA4?  >=>l  Synchronized audio/video recording  >=>l  Synchronized audio/video playback  >=>l  Slave playback to timecode  >=>l  Field-accurate capture/laydown on Sony-style RS-422 VTR  >=>l  Measure total jack-to-jack delay of real-time processing application  >=>l  Much more! 1FhhhCc3D2~Cc3D&~D:QD2~"?Q???Cc3D&~?  >=>UST support does not:hhhCeD۱CeBFDD۰"@O???CeBF?  >=>l  Interact with UNIX scheduler  >=>l  Make you run more or less often  >=>l  Make you able to react more or less rapidly to input signal  >=>l  Change advance warning needed to get output signal out on time.hhhC\ DJC\ D:D[CDJ"?N???C\ D:?  >=>Accuracy vs. Latency  >=> 1FhhhC\ DJC\ D:D(|DJ"?L???C\ D:?  >=>The UST Clock  >=>hhhCcCD/BfCcCA4DnD/Bf"@J???CcCA4?  >=>l  Signed 64-bit (C typedef stamp_t)  >=>l  Units of nanoseconds  >=>l  Wraps in 292 years  >=>l  Zero at system startup  >=>l  Never adjusted by timed or sysadmins  >=>l  Never decreases  >=>l  Updated every 1us or better  >=>l  Rate accuracy 100ppm or better 1>FhhhZC\ DJC\ D:DrDJ"?I???C\ D:?  >=>UST Most Useful When Paired  >=>dhhh`CcCD/BfCcCA4DnD/Bf"@G???CcCA4?  >=>l  "It's 5:00 pm" not very useful  >=>l  "This frame arrived at 5:00 pm" useful  >=>l  Silicon Graphics libraries pair data with UST - audio frames - video fields/frames - MIDI events - serial bytes 17FhhhC\ DJC\ D:D`|DJ"?F???C\ D:?  >=>Synchronization Point  >=>hhhCc3D2~Cc3D&D|.D2"?D???Cc3D&?  >=>What part of data does UST label?LhhhCeD۱CeBFDD۰"@B???CeBF?  >=>l  Video: see videosync (3dm)  >=>l  Serial bytes: start bit leading edge  >=>l  MIDI: first serial byte of MIDI message  >=>l  Audio: sampling clock edge 1!Fhhh&Cc3D2~Cc3D&DnD2"?A???Cc3D&?  >=>Synchronized audio/video recording h'CD@CADD@@@DO?CD@? h4C>CCC?????B Cـ?  audio signalh>B CB CC8RC?=???B C?  video signal h?CCCCCC@@CC?fff?Bfff?CC?Bfff?fff?3[Ch*W h@CCCCCC@@CC??B?CC?B??3[F?A$?DvC?/>ʫA}V?2TC, hD qCD qCDCi@D qC?CBɋ?ɋDo6Cv?Akc3?!4@?DC_?@;A@?2CMhhhC\ DJC\ D:D33kDJ"?%???C\ D:?  >=>How to Use UST  >=> 1"FhhhCc3D2~Cc3D&DpD2"?#???Cc3D&?  >=>Synchronized audio/video playback hBD@BADXD@@@DO?BD@? hD0}CD0}CsDK}C?B?D0}C?hCC0CCCXC1?!???CC?  MVtimehD@C0D@CDQ C1????D@C?  UST time hD&CD&CӀD(C?A?D&C? hD6@CD6@CӀD8C?A?D6@C? hDFCDFCӀDH@C?A?DFC?hD1CD1CD>@C????D1C?  UST  hDACDACDNC????DAC?  UST  hD"CD"CD.C????D"C?  UST  hD7=CfD7=CODCCg????D7=CO?  UST  hC`D9aC`D 9C$D9????C`D 9?  Movie FilehB(CB(CـCfC????B(Cـ?  AudiohBGCBGCCh\*C????BGC?  Image hBDBCOC|D?C4â?BD? hBCBCC|C?BC??B?C|C?B??2Cj hC|DC|DDD?C|D?ff?Bff?DD?Bff?ff?2ǼCy hC|COC|CODCO?C|CO?ff?Bff?DCO?Bff?ff?2ǀC hC|CC|CӀCC?A?C|C? hCCCCӀCC?A?CC? hCCCCӀCC?A?CC? hCCCCӀCC?A?CC? hCCCCӀCC?A?CC? hCCCCӀCC?A?CC? hCCCCӀCC?A?CC? hCCCCӀCC?A?CC? hCCCCӀCC?A?CC? hCCCCӀCC?A?CC? hCCCCӀCC?A?CC? hCCCCӀCC?A?CC? hCCCCӀCC?A?CC? hCCCCӀCC?A?CC? hCCCCӀCC?A?CC? hCCCCӀCC?A?CC? hCCCCӀCʀC?A?CC? hCʀCCʀCӀCC?A?CʀC? hCCCCӀCӀC?A?CC? hCӀCCӀCӀCC?A?CӀC? hCCCCӀC܀C?A?CC? hC܀CC܀CӀCC?A?C܀C? hCCCCӀCC?A?CC? hCCCCӀCC?A?CC? hCCCCӀCC?A?CC? hCCCCӀCC?A?CC? hCCCCӀCC?A?CC? hCCCCӀCC?A?CC? hCCCCӀD@C?A?CC? hD@CD@CӀDC?A?D@C? hC|CC|CsCC?B?C|C? hCCCCsCC?B?CC? hDCDCDC?DC?fff?@fff?DC?@fff?fff?2DC hDCӀDCӀDCӀ?DCӀ?fff?@fff?DCӀ?@fff?fff?2C_ hCCCCDC?CC?ə?Aə?DC?Aə?ə?2Cs hCCsCCsDCs?CCs?ə?Aə?DCs?Aə?ə?2ƐCjhD2CnXD2CnD A8Cn????D2Cn?  ...hDCXDCD AC? ???DC?  ...hDiCDiCـD"C? ???DiCـ?  audio signalhDiCDiCDC? ???DiC?  video signal h DOCDOCDgC@@DOC?fff?Bfff?DgC?Bfff?fff?2TCF h DOCDOCDgC@@DOC??B?DgC?B??2C hCmCVCmCVD'D YK@CmCV??62B{?lDD?B-:@?8A ?D'C?B"¸MoAs t?2C hC7CFMC7CFMD4SCL@C7CFM?AB̙D?̙DD4SC?BU=’B/ ?2CyhhhC\ DJC\ D:D33kDJ"????C\ D:?  >=>How to Use UST  >=> 1#FhhhCc3D2~Cc3D&D9ޡD2"????Cc3D&?  >=>Real-Time Processing hCD@CCʀDXD@@@CX?CD@?hDiD DiCD"D ????DiC?  audio signal hDODDODDgD@@DOD?fff?Bfff?DgD?Bfff?fff?2CwhhhC\ DJC\ D:D33kDJ"????C\ D:?  >=>How to Use UST  >=>hB D B CC>D ????B C?  audio signal hCDCDCD@@CD?fff?Bfff?CD?Bfff?fff?2Cy hDFD DFCDH@D ?A?DFD ?hDACDACDQBC????DAC?  ?UST   ?O   h$CأD CأCC#D ?A?CأD ?h%CϣCCϣCC$GC????CϣC?  ?UST   ?I   h(CD@CCD8D@?Cj?CD@?h,D, D D, CD8, D ????D, C?  your app h-C܀DC܀DD?D@@C܀D?fff?Bfff?D?D?Bfff?fff?2tCx h.D6@DD6@DDED@@D6@D?fff?Bfff?DED?Bfff?fff?28CxXhhh/CcCCCcCA4DnC"@???CcCA4?  >=>l  Input sample with UST@  I    >=>l  Processed by your app  >=>l  Becomes output sample with UST@  O    >=>l  Jack-to-jack latency is UST@  O  -UST@  I   1$Fhhh5C\ DJC\ D:DcDJ"????C\ D:?  >=>UST in MIDI  >=>hhh6CcCD/BfCcCA4DnD/Bf"@???CcCA4?  >=>l  mdReceive() and mdSend() use MDevent  >=>'l  MDevent.stamp contains a timestamp'  >=>l  stamp is UST if you do this:'@  { MDport port; /* ... open port ... */ mdSetStampMode(port, MD_RELATIVESTAMP); mdSetStartPoint(port, 0, 0); /* ... send or receive MIDI ... */ }  '' 1%Fhhh9C\ DJC\ D:D/DJ"????C\ D:?  >=>UST in tserialio (IRIX 6.3)  >=>(hhh:CcCD/BfCcCA4DnD/Bf"@???CcCA4?  >=>l  Timestamped serial I/O library  >=>l  Timestamps are always UST  >=>l  To read bytes:@  tsRead(port, (unsigned char *)data, (stamp_t *)stamps,& nbytes);  >=>l  To write bytes:@  tsWrite(port, (unsigned char *)data, (stamp_t*)stamps, nbytes);   1&Fhhh<C\ DJC\ D:DLDJ"????C\ D:?  >=>UST for Video Input  >=>hhh=CcCD/BfCcCA4DnD/Bf"@???CcCA4?  >=>l  UST timestamp in incoming buffers$  >=>l  VLBuffer buffering API:  >=>$@  VLInfoPtr info = /* ... */;% DMediaInfo *dminfo;% dminfo = vlGetDMediaInfo(server, buffer, info);% /* dminfo->ustime contains UST of this buffer */%%  >=>l  DMbuffer buffering API:  >=>$@  DMbuffer *buf = /* ... */;% USTMSCpair pair;% pair = dmBufferGetUSTMSCpair(buf);% /* pair.ust contains UST of this buffer */% 1'FhhhBC\ DJC\ D:D+;DJ"????C\ D:?  >=>UST Elsewhere  >=>hhhCCcCD/BfCcCA4DnD/Bf"@???CcCA4?  >=>l  CL API for Cosmo, Indigo2 IMPACT, Octane Compression - clGetNextImageInfo() - see references at end  >=>l  dmGetUSTCurrentTimePair() - pairs UST with gettimeofday() - useful for cross-machine sync  >=>l  dmIC modules pass USTMSCpair through unchanged 1(FhhhEC\ DJC\ D:CDDJ"????C\ D:?  >=>UST/MSC  >=> hḄHBḄHBDhB?ḄHB?=?C=?DhB?C=?=?2Cx hC!C̠C!C̠CC2,?C!C2,CC2,CC̠C!C̠2Cs; hCC̠CC̠DF1C2,?CC2,DF1C2,DF1C̠CC̠24CP hDF1C̠DF1C̠DhC2,?DF1C2,DhC2,DhC̠DF1C̠2C= hCIC(D>C`D&+C?@ \@ [?D>C`?  MSC45   hD)2CFD)3CSk'DC(D>C`DNzC?@ \@ [?D>C`?  MSC47   hDPCFDPCSk'Dd]/CF?BEGžEF?DPCF?hDR{C(DRC`DbY%C?@ \@ [?DRC`?  MSC48   hDd]+CFDd]-CSk'Dx%CF?BEGžEF?Dd]-CF?hDfa1C(Dfa5C`Dv!C?@ \@ [?Dfa5C`?  MSC49   hDx%CFDx%CSk'DACF?BEGžEF?Dx%CF?hDz)C(Dz)C`D=C?@ \@ [?Dz)C`?  MSC50   hC!C2,ḄPC2,C!C2,?C!C2,?A??ḄPC2,??A?2C-< hC!C̠ḄPC̠C!C̠?C!C̠?A??ḄPC̠??A?2XC֒ hDhC2,DhC2,DTC2,?DhC2,??A?DTC2,?A??2C hDhC̠DhC̠DTC̠?DhC̠??A?DTC̠?A??2CxhC7CqC7C9CC?@ \@ [?C7C9?  MSC5  hD>CqD>C9D&+C?@ \@ [?D>C9?  MSC6  hDfa8CqDfa7C9Dv!C?@ \@ [?Dfa7C9?  MSC7   hD>CFD>CFDb~CF?D>CF??A?Db~CF?A??2Cz hD>CSk*D>CSk*Db~CSk*?D>CSk*??A?Db~CSk*?A??2hC hCICNiCGC C(CN ?@ \@ @?CGC ?       USThC&CNC&C *CԺ9CN(?@ \@ [?C&C *?       USThC߷CNiC߷C CKCN ?@ \@ @?C߷C ?       USThDCNDC *DnCN(?@ \@ [?DC *?       USThDm>CNiDmIC D%CN ?@ \@ @?DmIC ?       USThD+5CND+5C *D9CN(?@ \@ [?D+5C *?       USThD>CNiD>C DMHiCN ?@ \@ @?D>C ?       USThDRBCNDRCC *DaCN(?@ \@ [?DRCC *?       USThDfCNiDfC DtټCN ?@ \@ @?DfC ?       USThDzXCNDzXC *DQ2CN(?@ \@ [?DzXC *?       USThhhCc3D2~Cc3D&DaD2"????Cc3D&?  >=>For sampled types like audio and videohhh2CeD۰CeD gDD۰"@???CeD g?  >=>l  Signal naturally divided into slots 1)FhhhC\ DJC\ D:D"R$DJ"????C\ D:?  >=>UST/MSC Pair  >=>hhhCc3D2~Cc3D&D6,tD2"????Cc3D&?  >=>Relates UST and MSC hḄHBḄHBDhB?ḄHB?=?C=?DhB?C=?=?2C* hC!C̠C!C̠CC2,?C!C2,CC2,CC̠C!C̠2PC  hCC̠CC̠DF1C2,?CC2,DF1C2,DF1C̠CC̠2Cx hDF1C̠DF1C̠DhC2,?DF1C2,DhC2,DhC̠DF1C̠1tCש hCIC(D>C`D&+C?@ \@ [?D>C`?  MSC45   hD)2CFD)3CSk'DC(D>C`DNzC?@ \@ [?D>C`?  MSC47   hDPCFDPCSk'Dd]/CF?BEGžEF?DPCF?hDR{C(DRC`DbY%C?@ \@ [?DRC`?  MSC48   hDd]+CFDd]-CSk'Dx%CF?BEGžEF?Dd]-CF?hDfa1C(Dfa5C`Dv!C?@ \@ [?Dfa5C`?  MSC49   hDx%CFDx%CSk'DACF?BEGžEF?Dx%CF?hDz)C(Dz)C`D=C?@ \@ [?Dz)C`?  MSC50   hC!C2,ḄPC2,C!C2,?C!C2,?A??ḄPC2,??A?1tHC˥ hC!C̠ḄPC̠C!C̠?C!C̠?A??ḄPC̠??A?1t C  hDhC2,DhC2,DTC2,?DhC2,??A?DTC2,?A??1sC" hDhC̠DhC̠DTC̠?DhC̠??A?DTC̠?A??1sChC7CqC7C9CC?@ \@ [?C7C9?  MSC5  hD>CqD>C9D&+C?@ \@ [?D>C9?  MSC6  hDfa8CqDfa7C9Dv!C?@ \@ [?Dfa7C9?  MSC7   hD>CFD>CFDb~CF?D>CF??A?Db~CF?A??1sXCAA hD>CSk*D>CSk*Db~CSk*?D>CSk*??A?Db~CSk*?A??1sCq hCICNiCGC C(CN ?l@ \@ @?CGC ?       USThC&CNC&C *CԺ9CN(?j@ \@ [?C&C *?       USThC߷CNiC߷C CKCN ?h@ \@ @?C߷C ?       USThDCNDC *DnCN(?f@ \@ [?DC *?       USThDm>CNiDmIC D%CN ?d@ \@ @?DmIC ?       USThD+5CND+5C *D9CN(?b@ \@ [?D+5C *?       USThD>CNiD>C DMHiCN ?`@ \@ @?D>C ?       USThDRBCNDRCC *DaCN(?^@ \@ [?DRCC *?       USThDfCNiDfC DtټCN ?\@ \@ @?DfC ?       USThDzXCNDzXC *DQ2CN(?Z@ \@ [?DzXC *?       UST dhDB@>?D C?½>?B@>1rC" hD[CDOFCmMDfC)j@@D\/vC|?›A@?B@D^CX2?BVpAO?ŠRXx?D\/vC|?sABs?1gPChhh0CeD۰CeD gDD۰"@X???CeD g?  >=>l  alGetFrameTime(), vlGetUSTMSCPair()h(BDaCBC`C~HDa?W@ \@ [?BC`?  video signal's fields/frames: 1*Fhhh*CeD۰CeC%&DD۰"@U???CeC%&?  >=>l  alGetFrameNumber(), vlGetFrontierMSC()  >=>l  MSC of next item you are about to read or write hCn=C~DCn\CxD?C~<@@DFjX?Cn\C~<? h CICFD>CFDb~CF?D>CF??A?Db~CF?A??1a`Cw h D>CSk*D>CSk*Db~CSk*?D>CSk*??A?Db~CSk*?A??1a$Cxh!DCDCvDOC+?F@ \@ [?DCv?   ...%h%D CDrD CDrD=V C~9@@ h D%C~=>Frontier MSC  >=>hhh(Cc3D2~Cc3D&DT/D2"?A???Cc3D&?  >=>Relates MSC and your datah+CGqCBCGqCBCDC|@@ CGrCB????CGrCN????CGrC{?A??CGrC{????CCC{?A???CCC{??A?CCCN????CCCB??A?1`pCxh,DMbCCusDMbCCusDgdLCA@@ DPbCCut????DMbCOut????DMbCA?A??DPbCA????DddKCA?A???DgdKCA??A?DgdKCOut????DddKCCut??A?0)C h-CCzqCCzqDZ|Czq?CCzq?fff?Bfff?DZ|Czq?Bfff?fff?0C- h.D=>How to Use UST/MSC  >=> 1;F hCCCCCC@@CC?vNv?B`hAh?CC?@Nv?v?vNv?CC?@v@Nv?Nvv?CC?@Nv?v?vNv?CC?@v@Nv?Nvv?CC?@Nv?v?vNv?CC?@v@Nv?Nvv?CC?@Nv?v?vNv?CC?@v@Nv?Nvv?CC?@Nv?v?vNv?CC?@v@Nv?Nvv?CC?@Nv?v?vNv?CC?@v@Nv?Nvv?CC?@Nv?v?vNv?CC?@v@Nv?Nvv?0XC[ hCCCCDC@@CC?vNv?B`hAh?CC?@Nv?v?vNv?CC?@v@Nv?Nvv?CC?@Nv?v?vNv?CC?@v@Nv?Nvv?CC?@Nv?v?vNv?CC?@v@Nv?Nvv?DC?@Nv?v?vNv?DC?@v@Nv?Nvv?DC?@Nv?v?vNv?DC?@v@Nv?Nvv?D C?@Nv?v?vNv?D C?@v@Nv?Nvv?DC?@Nv?v?vNv?DC?@v@Nv?Nvv?0C hDCDCD/C@@DC?vNv?B`hAh?DC?@Nv?v?vNv?DC?@v@Nv?Nvv?DC?@Nv?v?vNv?DCʀ?@v@Nv?Nvv?DCʀ?@Nv?v?vNv?DC?@v@Nv?Nvv?D"C?@Nv?v?vNv?D"CӀ?@v@Nv?Nvv?D&CӀ?@Nv?v?vNv?D&C?@v@Nv?Nvv?D+C?@Nv?v?vNv?D+C܀?@v@Nv?Nvv?D/C܀?@Nv?v?vNv?D/C?@v@Nv?Nvv?0C. hD/CD/CDOD@@@D/C?vNv?B`hAh?D4C?@Nv?v?vNv?D4C?@v@Nv?Nvv?D8C?@Nv?v?vNv?D8C?@v@Nv?Nvv?D=C?@Nv?v?vNv?D=C?@v@Nv?Nvv?DAC?@Nv?v?vNv?DAC?@v@Nv?Nvv?DFC?@Nv?v?vNv?DFC?@v@Nv?Nvv?DJC?@Nv?v?vNv?DJC?@v@Nv?Nvv?DOC?@Nv?v?vNv?DOD@?@v@Nv?Nvv?0C%hDSCDSC TDcD 1@@7?d>?d?DX|C T?  ust_per_msc hDOD@DOD@DnD@@DOD@?vNv?B`hAh?DSD@?@Nv?v?vNv?DSD?@v@Nv?Nvv?DXD?@Nv?v?vNv?DXD?@v@Nv?Nvv?D\D?@Nv?v?vNv?D\D?@v@Nv?Nvv?DaD?@Nv?v?vNv?DaD @?@v@Nv?Nvv?DeD @?@Nv?v?vNv?DeD ?@v@Nv?Nvv?DjD ?@Nv?v?vNv?DjD ?@v@Nv?Nvv?DnD ?@Nv?v?vNv?DnD?@v@Nv?Nvv?0XC hCD@CCCD@@@CD@?,?C,?CC?C,?,̀?/OCj hCCCCDC@@CC?Þff?Cff?DC?Cff?Þff?/OCyhCD"aCDCSD"@@5???CD?  MSChDC6DCDC6@@3???DC?  UST hCC"CC"CC"@@CC"?fff?Afff?CC"?Afff?fff?/OxC hCC+CC+CC+@@CC+?fff?Afff?CC+?Afff?fff?/O=>How to Use UST/MSC  >=> 1=F hCCCCCC@@CC?vNv?B`hAh?CC?@Nv?v?vNv?CC?@v@Nv?Nvv?CC?@Nv?v?vNv?CC?@v@Nv?Nvv?CC?@Nv?v?vNv?CC?@v@Nv?Nvv?CC?@Nv?v?vNv?CC?@v@Nv?Nvv?CC?@Nv?v?vNv?CC?@v@Nv?Nvv?CC?@Nv?v?vNv?CC?@v@Nv?Nvv?CC?@Nv?v?vNv?CC?@v@Nv?Nvv?/C4C( hCCCCDC@@CC?vNv?B`hAh?CC?@Nv?v?vNv?CC?@v@Nv?Nvv?CC?@Nv?v?vNv?CC?@v@Nv?Nvv?CC?@Nv?v?vNv?CC?@v@Nv?Nvv?DC?@Nv?v?vNv?DC?@v@Nv?Nvv?DC?@Nv?v?vNv?DC?@v@Nv?Nvv?D C?@Nv?v?vNv?D C?@v@Nv?Nvv?DC?@Nv?v?vNv?DC?@v@Nv?Nvv?/AC hDCDCD/C@@DC?vNv?B`hAh?DC?@Nv?v?vNv?DC?@v@Nv?Nvv?DC?@Nv?v?vNv?DCʀ?@v@Nv?Nvv?DCʀ?@Nv?v?vNv?DC?@v@Nv?Nvv?D"C?@Nv?v?vNv?D"CӀ?@v@Nv?Nvv?D&CӀ?@Nv?v?vNv?D&C?@v@Nv?Nvv?D+C?@Nv?v?vNv?D+C܀?@v@Nv?Nvv?D/C܀?@Nv?v?vNv?D/C?@v@Nv?Nvv?/@C, hD/CD/CDOD@@@D/C?vNv?B`hAh?D4C?@Nv?v?vNv?D4C?@v@Nv?Nvv?D8C?@Nv?v?vNv?D8C?@v@Nv?Nvv?D=C?@Nv?v?vNv?D=C?@v@Nv?Nvv?DAC?@Nv?v?vNv?DAC?@v@Nv?Nvv?DFC?@Nv?v?vNv?DFC?@v@Nv?Nvv?DJC?@Nv?v?vNv?DJC?@v@Nv?Nvv?DOC?@Nv?v?vNv?DOD@?@v@Nv?Nvv?/?tC, hDOD@DOD@DnD@@DOD@?vNv?B`hAh?DSD@?@Nv?v?vNv?DSD?@v@Nv?Nvv?DXD?@Nv?v?vNv?DXD?@v@Nv?Nvv?D\D?@Nv?v?vNv?D\D?@v@Nv?Nvv?DaD?@Nv?v?vNv?DaD @?@v@Nv?Nvv?DeD @?@Nv?v?vNv?DeD ?@v@Nv?Nvv?DjD ?@Nv?v?vNv?DjD ?@v@Nv?Nvv?DnD ?@Nv?v?vNv?DnD?@v@Nv?Nvv?/>4C( hCD@CCCD@@@CD@?,?C,?CC?C,?,̀?/=Db hCCCCDC@@CC?Þff?Cff?DC?Cff?Þff?/=D dChCD"aCDCSD"@@/???CD?  MSChDC6DCDC6@@-???DC?  UST hCC"CC"CC"@@CC"?fff?Afff?CC"?Afff?fff?/=C] hCC+CC+CC+@@CC+?fff?Afff?CC+?Afff?fff?/=DC hCC4CC4CC4@@CC4?fff?Afff?CC4?Afff?fff?/6C% hCC=CC=CC=@@CC=?fff?Afff?CC=?Afff?fff?/6CCCCCC@@CC?fff?Afff?CC?Afff?fff?.PC h?CCCCCC@@CC?fff?Afff?CC?Afff?fff?.C h@CDCDCD@@CD?fff?Afff?CD?Afff?fff?.Cs hACD@CD@CD@@@CD@?fff?Afff?CD@?Afff?fff?.Cr hBCDCDCD@@CD?fff?Afff?CD?Afff?fff?.`Co hCCDCDCD@@CD?fff?Afff?CD?Afff?fff?.$Ce hDCD @CD @CD @@@CD @?fff?Afff?CD @?Afff?fff?.CNM hECCCCCC@@CC?fff?Afff?CC?Afff?fff?.C hFDCCCDC@@DC?Bə?ə?CC?ə?Bə?.pC hGDCDCDC@@DC?»33?B33?DC?B33?»33?.4C79hHDCDC@D C@@@@?DC? hICCCCDFC@@CC?;33?C;33?DFC?C;33?;33?.CYP hJDFCDFCDFC@@DFC??C̀?DFC?C?̀?.C#hNDFCDDC@DG C@@@@?DFC?hPBDBCCXD@@+???BC?  data MSC!hQD1CD1BDfB C@@)???D1B?  data USThhhWC\ DJC\ D:D[3kDJ"?'???C\ D:?  >=>How to Use UST/MSC  >=> 1,Fhhh6C\ DJC\ D:D[3kDJ"?%???C\ D:?  >=>How to Use UST/MSC  >=>hhh7Cc3D2~Cc3D&DV-zD2"?#???Cc3D&?  >=>Relating UST and your datahhh;CeD۱CeBFDD۰"@!???CeBF?@  { double ust_per_msc = get_ust_per_msc(); USTMSCpair pair = get_ust_msc_pair(); stamp_t frontier_msc = get_frontier_msc();  /* step 1: figure out which MSC you want a UST for */  stamp_t desired_msc = frontier_msc;  /* step 2: compute the UST of that MSC */  stamp_t desired_ust = pair.ust + ust_per_msc*(desired_msc - pair.msc); }    1+Fhhh<C\ DJC\ D:DbIDJ"? ???C\ D:?  >=>UST/MSC: Audio Input  >=> hNC`CC\CD-q.C?C?C\C? hOC`CC\CD-q.C?C?C\C? hPC`CC\CD-q.C?C?C\C?Cb\Cf Cb\CXCCf@@???Cb\CX?  dataCb\C߆Cb\CsCC@@???Cb\Cs?  dataCb\C_Cb\C_CC_@@???Cb\C_?  dataCb\C߆Cb\CCC@@???Cb\C?  dataCb\C_Cb\C_CC_@@???Cb\C_?  dataCb\C߆Cb\CCC@@???Cb\C?  dataD .C߆D .CsD1.C@@???D .Cs?  USTD .C_D .C_D1.C_@@???D .C_?  USTD .C߆D .CD1.C@@???D .C?  UST hQC\CC\C7?C\C?C\C?홚?B홚?C\C7??B홚?홚?.CK hRD q.CD q.C7?D q.C?D q.C?홚?B홚?D q.C7??B홚?홚?.DC hSC`Cm?C\CR?D-q.Cm??C?C\Cm?? hTC`CC\Cm?D-q.C?C?C\C? hUC\CC\CD-q.C?C\CD-q.CD-q.CC\C.C~/ hVCaĴDCaļCD41/D?Cæ?CaļD? hWCaļCCaļCD41-C?CaļC?;33?C;33?D41-C?C;33?;33?.Ce CiĺD1CiĺDCsD1@ ???CiĺD?  Your Program CiĺCCiĺCCVUC@ ???CiĺC?  Audiosubsystem CiĺCCiĺCC C????CiĺC?  Audio JackCb\C߆Cb\CsC=C@@???Cb\Cs?  MSC 97 Cb\C_Cb\C_CC_@@???Cb\C_?  MSC 96Cb\C߆Cb\CC=C@@???Cb\C?  MSC 95 Cb\C_Cb\C_CC_@@???Cb\C_?  MSC 94D .C_D .C_D1.C_@@???D .C_?  USTD .C߆D .CD1.C@@???D .C?  USTjCb\CK Cb\C=CCK@@???Cb\C=?  datakD .CK D .C=D1.CK@@???D .C=?  UST hXC`CR?C\C7?D-q.CR??C?C\CR??mCb\CK Cb\C=CCK@@???Cb\C=?  MSC 99 :hYCCsC[CD1q/Cq?CCs?A^@AF?Y4wCЍC?AN@j??C\Cs?A?@P@?DFCd?AK̀?[@Q?D.Cs?AEـ?U@?D).Cd?A(e@l/?t'`?D0C??cE@?*3@?D1q.Cs??XX@?D1q.Cs?D?@Ia@@~$D*ƂC?3`?A @EP?DƄC?u_@0L?Ai ?DC?_ @_@?^dA//?CC?z&@zM?xOB̠E?|RC7CJn?yE!(K?| A,??wlC[C?Ӓ,»AA?.dC[hCb\CI?Cb\CI?D41-Cv?@@ Cb\CI?????Cb\C]???UG?UUG?Cb\Cb??AUUG?UG?Cb\Cv?????D11-Cv??@???D41-Cd??UG?AUUG?D41-C]??UUG??UG?D11-CI???@?- CNL hD.C.?D.BD.C.?@@D.C.???A?D.B?A??-lCs Cb\CCb\CCC@@???Cb\C?  MSC 76Cb\CfCb\CXnCCfn????Cb\CXn?  MSC 98D .CfD .CXnD1.Cfn@@???D .CXn?  UST:hsD:CuD:CED,Cu????D:CE?  One Slot (frame):htCB+~CBRXDKr-B,z????CBRX?  Incoming audio signal:hCD+CDC D+????CD?  Data:hCD+CDD D+????CD?  MSC:hDD+DDD6D+????DD?  UST hCHD)qCHCdCrD)q@@CHD)q?c?BcA?CrCd?BcA?c?-0Cs  hC]D)rCfCdC]D)r@@C]D)r?7AO?B7O?CfCd?B7O?7AO?-Cs  hD(D)qDCcD(D)q@@D(D)q?AϞ?BϞ?DCc?BϞ?AϞ?-Cs %hD7lCD7lCDDC@@ hD7lCD7lCDDC@@D7lC?Bl@|u?l|uDDC?B7^7^@?-|Cs  hD7lCD7lCDDC@@D7lC?BlU?l@UDDC?B7^@d7^d?-Cs %hD7&6C8D7&6C8DDD~p@@ hD7&6D~pD7&6D}5DDD~p@@D7&6D~p?Bl@2?l2DDD}5?B7^7^@?-4Cn hD7&7C8D7&7C8DDD:%@@D7&7C8?Bl 1?l@ 1DDD:%?B7^@R7^R?- C:hDGYDDGYCDD????DGYC?  Your program:hDGYCLDGYCMDZCM????DGYCM?  Audio subsystem 1-F h]C`CC\CD-q.C?C?C\C? h^C`CC\CD-q.C?C?C\C? h_C`CC\CD-q.C?C?C\C?h`Cb\Cf Cb\CXCCf@@???Cb\CX?  datahaCb\C߆Cb\CsCC@@???Cb\Cs?  datahbCb\C_Cb\C_CC_@@???Cb\C_?  datahcCb\C߆Cb\CCC@@???Cb\C?  datahdCb\C_Cb\C_CC_@@???Cb\C_?  dataheCb\C߆Cb\CCC@@???Cb\C?  datahfD .C߆D .CsD1.C@@???D .Cs?  USThgD .C_D .C_D1.C_@@???D .C_?  USThhD .C߆D .CD1.C@@???D .C?  UST hiC\CC\C7?C\C?C\C?홚?B홚?C\C7??B홚?홚?- C hjD q.CD q.C7?D q.C?D q.C?홚?B홚?D q.C7??B홚?홚?- C