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홚?홚?- Ct hkC`Cm?C\CR?D-q.Cm??C?C\Cm?? hlC`CC\Cm?D-q.C?C?C\C? hmC\CC\CD-q.C?C\CD-q.CD-q.CC\C- LCh hnCaĴDCaļCD41/D?Cæ?CaļD? hoCaļCCaļCD41-C?CaļC?;33?C;33?D41-C?C;33?;33?- CehpCiĺD1CiĺDCsD1@???CiĺD?  Your ProgramhqCiĺCCiĺCCVUC@???CiĺC?  AudiosubsystemhrCiĺCCiĺCC C????CiĺC?  Audio JackhsCb\C߆Cb\CsC=C@@???Cb\Cs?  MSC 97 htCb\C_Cb\C_CC_@@???Cb\C_?  MSC 96huCb\C߆Cb\CC=C@@???Cb\C?  MSC 95 hvCb\C_Cb\C_CC_@@???Cb\C_?  MSC 94hwD .C_D .C_D1.C_@@???D .C_?  USThxD .C߆D .CD1.C@@???D .C?  USThyCb\CK Cb\C=CCK@@???Cb\C=?  datahzD .CK D .C=D1.CK@@???D .C=?  UST h{C`CR?C\C7?D-q.CR??C?C\CR??h|Cb\CK Cb\C=CCK@@???Cb\C=?  MSC 99 :h}CCsC[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?- C hC`CC\CD-q.C?C?C\C?C\CcC\CcCFCc????C\Cc?  data hC`DC\CD-q.D?C?C\D?C\DC\DqCFD????C\Dq?  data hC`D OC\DD-q.D O?C?C\D O?C\D C\D1CFD ????C\D1?  data hC`DC\D OD-q.D?C?C\D?C\DqC\D CFDq????C\D ?  data hC\DC\CC\D?C\D?,?B,?C\C?B,?,?+̜Cb@ hD q.DD q.CD q.D?D q.D?,?B,?D q.C?B,?,?+`CV; hC\CC\CC\C@@C\C?B??C\C??B?+$C,Cb\CCb\CCC@@???Cb\C?  MSC 80D XCf D XCXD1XCf@@???D XCX?  USTCbCf CbCXCdCf????CbCX?  MSC 98hhhC\ DJC\ D:DbIDJ"????C\ D:?  >=>UST/MSC: Audio Input  >=>hhhuCc3D2~Cc3D&D ~D2"????Cc3D&?  >=>Read 4 frameshC@eCC@eCiCCi????C@eCi?  alReadFrames()  L?L?L? 1.FhhhC\ DJC\ D:DbIDJ"????C\ D:?  >=>UST/MSC: Audio Input  >=>hhhvCc3D2~Cc3D&DD2"????Cc3D&?  >=>Determine data MSCs with frontier MSC:hzD?C4D?CDLC????D?C?  80 hC_CC[CD-q-C?C?C[C? hC_CC[CD-q-C?C?C[C? hC_CC[CD-q-C?C?C[C?hCb\Cf Cb\CXCCf@@???Cb\CX?  datahCb\C߅Cb\CsCC@@???Cb\Cs?  datahCb\C_Cb\C_CC_@@???Cb\C_?  datahCb\C߆Cb\CCC@@???Cb\C?  datahCb\C_Cb\C_CC_@@???Cb\C_?  datahCb\C߅Cb\CCC@@???Cb\C?  datahD .C߅D .CsD1.C@@???D .Cs?  USThD .C_D .C_D1.C_@@???D .C_?  USThD .C߆D .CD1.C@@???D .C?  UST hC\CC\C7?C\C?C\C?홙?B홙?C\C7??B홙?홙?+C hD q-CD q-C7?D q-C?D q-C?홙?B홙?D q-C7??B홙?홙?+ˬCt hC_Cm?C[CR?D-q-Cm??C?C[Cm?? hC_CC[Cm?D-q-C?C?C[C? hC[CC[CD-q.C?C[CD-q.CD-q.CC[C+HCh hCaĴDCaļCD41.D?Cæ?CaļD? hCaļCCaļCD41,C?CaļC?;33?C;33?D41,C?C;33?;33?+ CfhCiĹD1CiĹDCsD1@???CiĹD?  Your ProgramhCiĹCCiĹCCVTC@???CiĹC?  AudiosubsystemhCiĹCCiĹCCC????CiĹC?  Audio JackhCb\C߅Cb\CsC=C@@???Cb\Cs?  MSC 97 hCb\C_Cb\C_CC_@@???Cb\C_?  MSC 96hCb\C߆Cb\CC=C@@???Cb\C?  MSC 95 hCb\C_Cb\C_CC_@@~???Cb\C_?  MSC 94hD .C_D .C_D1.C_@@|???D .C_?  USThD .C߅D .CD1.C@@z???D .C?  USThCb\CK Cb\C=CCK@@x???Cb\C=?  datahD .CK D .C=D1.CK@@v???D .C=?  UST hC_CR?C[C7?D-q-CR??C?C[CR??hCb\CK Cb\C=CCK@@t???Cb\C=?  MSC 99 :hCCs CZCD1q/Cq?CCs ?A^@AF?Y3wCЍC?AM@j??CZCs ?A?@P??DFCd?AK̀?[@Q?D.Cs ?AE?U@?D)-Cd?A(e@l.?t'`?D0C??cE??*~3??D1q.Cs ??WW@?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,??wlCZC?Ӓ,»AA?+C hC_CC[CD-q-C?C?C[C?]C\CcC\CcCˁCc?r???C\Cc?  data hC_DC[CD-q-D?C?C[D?_C\DC\DqCˁD?p???C\Dq?  data hC_D OC[DD-q-D O?C?C[D O?aC\D C\D1CˁD ?n???C\D1?  data hC_DC[D OD-q-D?C?C[D?cC\DqC\D CˁDq?l???C\D ?  data hC\DC\CC\D?C\D?,?B,?C\C?B,?,?*pCo hD q-DD q-CD q-D?D q-D?,?B,?D q-C?B,?,?*4CehCCCVCCVC@@AA|r?CC? hCCCCCC@@CC?BR?R?CC?R?BR?*CNMhC"D}C"D C]D}@@j???C"D ?  MSC 76iC"D C"D=C]D @@h???C"D=?  MSC 77jC"DC"D}C]D@@f???C"D}?  MSC 78kC"C{C"C{C]C{@@d???C"C{?  MSC 79pCb\CCb\CCC@@b???Cb\C?  MSC 80qD WCf D WCXD1WCf@@`???D WCX?  USTCbCf CbCXCdCf?^???CbCX?  MSC 98:h}D?DD?C`DLD?\???D?C`?  76!77!78!79! hD=vDFDCDUD=vDF@@D=vDF?BxA.?¼?DCDU?BR@?*p)?*C hD=vDDADD=vDx4@@D=vD?@ B0 ? 0 ?DADx4? 0 ?@ B0 ?*C hD=vC DBC D=vD@@D=vC ?AB s?¼ s?DBD?¼ s?AB s?*DC79 hD=vC DBC D=vC*@@D=vC ?A$B s?$¼ s?DBC*?$¼ s?A$B s?*CYP hD=vC DAC D=vC@@D=vC ?>ZBV?Z½V?DAC?Z½V?>ZBV?*C#:hDXD \DXC`DyD ?Z???DXC`?  Data!MSCs!:hDXCDXCDC?X???DXC?  Frontier MSChClHCrClHCsD Cs?V???ClHCs?  alGetFrameNumber()  L?L?L? 1/F hC`CC\CD-q.C?C?C\C? hC`CC\CD-q.C?C?C\C? hC`CC\CD-q.C?C?C\C?hCb\Cf Cb\CXCCf@@T???Cb\CX?  datahCb\C߆Cb\CsCC@@R???Cb\Cs?  datahCb\C_Cb\C_CC_@@P???Cb\C_?  datahCb\C߆Cb\CCC@@N???Cb\C?  datahCb\C_Cb\C_CC_@@L???Cb\C_?  datahCb\C߆Cb\CCC@@J???Cb\C?  datahD .C߆D .CsD1.C@@H???D .Cs?  USThD .C_D .C_D1.C_@@F???D .C_?  USThD .C߆D .CD1.C@@D???D .C?  UST hC\CC\C7?C\C?C\C?홚?B홚?C\C7??B홚?홚?*CK hD q.CD q.C7?D q.C?D q.C?홚?B홚?D q.C7??B홚?홚?*TC hC`Cm?C\CR?D-q.Cm??C?C\Cm?? hC`CC\Cm?D-q.C?C?C\C? hC\CC\CD-q.C?C\CD-q.CD-q.CC\C*C~/ hCaĴDCaļCD41/D?Cæ?CaļD? hCaļCCaļCD41-C?CaļC?;33?C;33?D41-C?C;33?;33?*CehCiĺD1CiĺDCsD1@B???CiĺD?  Your ProgramhCiĺCCiĺCCVUC@@???CiĺC?  AudiosubsystemhCiĺCCiĺCC C?>???CiĺC?  Audio JackhCb\C߆Cb\CsC=C@@<???Cb\Cs?  MSC 97 hCb\C_Cb\C_CC_@@:???Cb\C_?  MSC 96hCb\C߆Cb\CC=C@@8???Cb\C?  MSC 95 hCb\C_Cb\C_CC_@@6???Cb\C_?  MSC 94hD .C_D .C_D1.C_@@4???D .C_?  USThD .C߆D .CD1.C@@2???D .C?  USThCb\CK Cb\C=CCK@@0???Cb\C=?  datahD .CK D .C=D1.CK@@.???D .C=?  UST hC`CR?C\C7?D-q.CR??C?C\CR??hCb\CK Cb\C=CCK@@,???Cb\C=?  MSC 99 :hCCsC[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?*tC[ hC`CC\CD-q.C?C?C\C?C\CcC\CcCˁCc?*???C\Cc?  data hC`DC\CD-q.D?C?C\D?C\DC\DqCˁD?(???C\Dq?  data hC`D OC\DD-q.D O?C?C\D O?C\D C\D1CˁD ?&???C\D1?  data hC`DC\D OD-q.D?C?C\D?C\DqC\D CˁDq?$???C\D ?  data hC\DC\CC\D?C\D?,?B,?C\C?B,?,̀?)C hD q.DD q.CD q.D?D q.D?,?B,?D q.C?B,?,̀?)CD q.Cg? D q.CY?D Cg??"???D q.CY??  UST u hD .Cm?D .Cm?D .C@D .Cm??B??D .C??B?)ĐCD.CD.CD.2C? ???D.C?  alGetFrameTime()  L?L?L?hCb\CR?Cb\CR?D1.Cm?@@ Cb\CR?????Cb\C^?????Cb\Ca??A??Cb\Cm?????D1.Cm??A???D1.Ca???A?D1.C^?????D1.CR???A?)CD .CD .CD)C????D .C?  UST u + T*(79-98)D .DD .DOD)D????D .DO?  UST u + T*(78-98)D .D D .DD)D ????D .D?  UST u + T*(77-98)D .DOD .D D)DP????D .D ?  UST u + T*(76-98)Cb\DqCb\D CDq@@???Cb\D ?  MSC 76Cb\D Cb\D1CD @@???Cb\D1?  MSC 77Cb\DCb\DqCD@@???Cb\Dq?  MSC 78Cb\CcCb\CcCCc@@???Cb\Cc?  MSC 79Cb\CCb\CCC@@???Cb\C?  MSC 80C\Cf C\CXDŽC+CfDŽ? ???C\CXDŽ?  MSC 98  hhhC\ DJC\ D:DbIDJ"? ???C\ D:?  >=>UST/MSC: Audio Input  >=>hhhwCc3D2~Cc3D&DD2"????Cc3D&?  >=>Determine data USTs with UST/MSC pair:hD?C$D?C!D|C????D?C!?  Pair has:! UST u! MSC 98:hD?DVD?C0DD????D?C0?  UST u + T*(76-98)!UST u + T*(77-98)!UST u + T*(78-98)!UST u + T*(79-98)! hD;DC%DjCa)8D;DC%@@D;DC%?BKf?AKf?DjCa)8?AKf?BKf?(C4 hD=vCD+CD=vC*@@D=vC?AYAm@?Ym@?D+C*?Ym@?AYAm@?(\C+ hD=wC]D+C]D=wD@@D=wC]?@AVA?AV?D+D?AV?@AVA?( C" hD=vD dCD+Dx4D=vD dC@@D=vD dC?AaA?@Aa?D+Dx4?@Aa?AaA?(C hD=vDbD+DUD=vDb@@D=vDb?RAt?ARt?D+DU?ARt?RAt?(D@ 10F hDaC(DaBODaC(@@DaC(??A?DaBO?A??(lD  hC`C/C\C,D-q.C,?C?C\C,? hC`C/C\C,D-q.C,?C?C\C,? hC`Ch*ZC\CM*XD-q.Ch*X?C?C\Ch*X? hC`C*C\C,D-q.C,?C?C\C,? Cb\CFCb\C8XCCFX@@???Cb\C8X?  data!Cb\CaCb\CSXCCaX@@???Cb\CSX?  data"Cb\C|Cb\CnXCC|X@@???Cb\CnX?  data#Cb\CCb\C,CC,@@???Cb\C,?  data$Cb\CTCb\CU,CCU,@@???Cb\CU,?  data%Cb\CCb\C,CC,@@???Cb\C,?  data+D .C|D .CnXD1.C|X@@???D .CnX?  UST,D .CD .C,D1.C,@@???D .C,?  UST-D .CTD .CU,D1.CU,@@???D .CU,?  UST hC\C,C\C2*XC\C,?C\C,?홚?B홚?C\C2*X?B홚?홚?(0D  hD q.C,D q.C2*XD q.C,?D q.C,?홚?B홚?D q.C2*X?B홚?홚?(D hC`C/C\Ch*XD-q.C,?C?C\C,? hC`CM*UC\C2*XD-q.CM*X?C?C\CM*X? hCaDCaļC)D41/D?Cæ?CaļD? hCaļCҕ,CaļCҕ,D41-Cҕ,?CaļCҕ,?;33?C;33?D41-Cҕ,?C;33?;33?(D<CiĺDxCiĺDlCsD@???CiĺDl?  Your Program=CiĺCXCiĺCY,CVUCY,@???CiĺCY,?  Audiosubsystem>CiĺCXCiĺCY,C CY,????CiĺCY,?  Audio JackCCb\CFCb\C8XCCFX@@???Cb\C8X?  MSC 26ECb\C|Cb\CnXC=C|X@@???Cb\CnX?  MSC 28 FCb\CCb\C,CC,@@???Cb\C,?  MSC 29GCb\CTCb\CU,C=CU,@@???Cb\CU,?  MSC 30 HCb\CCb\C,CC,@@???Cb\C,?  MSC 94LD .CD .C,D1.C,@@???D .C,?  USTND .CFD .C8XD1.CFX@@???D .C8X?  UST hC`C/C\C,D-q.C,?C?C\C,?QCb\CTCb\CU,CCU,@@???Cb\CU,?  dataRD .CTD .CU,D1.CU,@@???D .CU,?  UST hC\C,C\C,C\C,?C\C,?,?A,?C\C,?A,?,̀?(|D@ hD q.C,D q.C,D q.C,?D q.C,?,?A,?D q.C,?A,?,̀?(@D@ :hCCxC[C,D1q/C?CCx?A^@AF?Y4wCЍC"?AN@j??C\Cx?A?@P@?DFC=?AK̀?[@Q?D.Cx?AEـ?U@?D).C=?A(e@l/?t'`?D0C"??cE@?*3@?D1q.Cx??XX@?D1q.Cx?D?@Ia@@~$D*ƂC,?3`?A @EP?DƄCj?u_@0L?Ai ?DCj?_ @_@?^dA//?CCj?z&@zM?xOB̠E?|RC7C?yE!(K?| A,??wlC[C,?Ӓ,»AA?(C hKC`C/C\C,D-q.C,?C?C\C,?C\CC\C,CC,????C\C,?  data ? hLC`DJC\C,D-q.DJ?C?C\DJ?C\DxC\CY,CD????C\CY,?  data ? hMC`D C\DJD-q.D ?C?C\D ?C\D lxC\DCD l????C\D?  data ? hNC`DʘC\D D-q.Dʖ?C?C\Dʖ?C\D,xC\D CD,????C\D ?  data ? hOC\DʖC\C,C\Dʖ?C\Dʖ?,?B,?C\C,?B,?,̀?'D hPD q.DʖD q.C,D q.Dʖ?D q.Dʖ?,?B,?D q.C,?B,?,̀?'D@Cb\CCb\C,CC,@@???Cb\C,?  MSC 65D XCbD XCTD1XCb@@???D XCT?  USThRCb\C,Cb\C,D41.C,@@ Cb\C-????Cb\C+??UH?UUH?Cb\C+?AUUH?UH?Cb\C+????D11/C+?@???D41.C+?UH?AUUH?D41.C+?UUH??UH?D11/C-??@?'CCbCbCbCTCdCb????CbCT?  MSC 27hhhmC\ DJC\ D:DoDJ"????C\ D:?  >=>UST/MSC: Audio Output  >=>:hCBCB;DBB????CB;?  Outgoing audio signalhD?ClhD?ClD{Cl@@???D?Cl?  Next audio frame!you will write!hD?DpD?CDD@@???D?C?  Must decide which!data to output next:!need USTs!hhhCc3D2~Cc3D&Dt3D2"????Cc3D&?  >=>It's time to write some more data 11F hC`C/C\C,D-q.C,?C?C\C,? hC`C/C\C,D-q.C,?C?C\C,? hC`Ch*[C\CM*XD-q.Ch*X?C?C\Ch*X? hC`C+C\C,D-q.C,?C?C\C,?hCb\CFCb\C8XCCFX@@???Cb\C8X?  datahCb\CaCb\CSXCCaX@@???Cb\CSX?  datahCb\C|Cb\CnXCC|X@@???Cb\CnX?  datahCb\CCb\C,CC,@@???Cb\C,?  datahCb\CTCb\CU,CCU,@@???Cb\CU,?  datahCb\CCb\C,CC,@@???Cb\C,?  datah D .C|D .CnXD1.C|X@@???D .CnX?  USTh D .CD .C,D1.C,@@???D .C,?  USTh D .CTD .CU,D1.CU,@@???D .CU,?  UST h C\C,C\C2*XC\C,?C\C,?홚?B홚?C\C2*X?B홚?홚?&CA h D q.C,D q.C2*XD q.C,?D q.C,?홚?B홚?D q.C2*X?B홚?홚?&4CA hC`C/C\Ch*XD-q.C,?C?C\C,? hC`CM*UC\C2*XD-q.CM*X?C?C\CM*X? hCaDCaļC)D41/D?Cæ?CaļD? hCaļCҕ,CaļCҕ,D41-Cҕ,?CaļCҕ,?;33?C;33?D41-Cҕ,?C;33?;33?&pCAhCiĺDxCiĺDlCsD@???CiĺDl?  Your ProgramhCiĺCXCiĺCY,CVUCY,@???CiĺCY,?  AudiosubsystemhCiĺCXCiĺCY,C CY,????CiĺCY,?  Audio JackhCb\CFCb\C8XCCFX@@???Cb\C8X?  MSC 26hCb\C|Cb\CnXC=C|X@@???Cb\CnX?  MSC 28 hCb\CCb\C,CC,@@???Cb\C,?  MSC 29hCb\CTCb\CU,C=CU,@@???Cb\CU,?  MSC 30 hCb\CCb\C,CC,@@???Cb\C,?  MSC 94hD .CD .C,D1.C,@@???D .C,?  USThD .CFD .C8XD1.CFX@@???D .C8X?  UST hC`C/C\C,D-q.C,?C?C\C,?hCb\CTCb\CU,CCU,@@???Cb\CU,?  datahD .CTD .CU,D1.CU,@@???D .CU,?  UST hC\C,C\C,C\C,?C\C,?,?A,?C\C,?A,?,̀?&CA h D q.C,D q.C,D q.C,?D q.C,?,?A,?D q.C,?A,?,̀?&CA :h!CCxC[C,D1q/C?CCx?A^@AF?Y4wCЍC"?AN@j??C\Cx?A?@P@?DFC=?AK̀?[@Q?D.Cx?AEـ?U@?D).C=?A(e@l/?t'`?D0C"??cE@?*3@?D1q.Cx??XX@?D1q.Cx?D?@Ia@@~$D*ƂC,?3`?A @EP?DƄCj?u_@0L?Ai ?DCj?_ @_@?^dA//?CCj?z&@zM?xOB̠E?|RC7C?yE!(K?| A,??wlC[C,?Ӓ,»AA?&(C hZC`C/C\C,D-q.C,?C?C\C,?sC\CC\C,CXC,????C\C,?  data ? h[C`DJC\C,D-q.DJ?C?C\DJ?uC\DxC\CY,CXD????C\CY,?  data ? h\C`D C\DJD-q.D ?C?C\D ?wC\D lxC\DCXD l????C\D?  data ? h]C`DʘC\D D-q.Dʖ?C?C\Dʖ?yC\D,xC\D CXD,????C\D ?  data ? h^C\DʖC\C,C\Dʖ?C\Dʖ?,?B,?C\C,?B,?,̀?$eC% h_D q.DʖD q.C,D q.Dʖ?D q.Dʖ?,?B,?D q.C,?B,?,̀?$eXCVPh`CCTCXC-NCXC@@AA|r?CC*? haCC,CC,CC*@@CC,?BR?R?CC*?R?BR?$eCE~C"D8C"D C]D8@@???C"D ?  MSC 68C"D xC"DC]D x@@???C"D?  MSC 67C"DC"Cq,C]D@@???C"Cq,?  MSC 66C"C9C"C,C]C,@@???C"C,?  MSC 65CCqCCqND!VCqN@@???CCqN?  alGetFrameNumber()Cb\CCb\C,CC,@@???Cb\C,?  MSC 65D q.CaD q.CSXD.CaX@@???D q.CSX?  USTCb\CXCb CXCb C???Cb CX?  Same   C\CaC\CSXC+CaX?~???C\CSX?  MSC 27hhhoC\ DJC\ D:DoDJ"?|???C\ D:?  >=>UST/MSC: Audio Output  >=>hhhCc3D2~Cc3D&DD2"?z???Cc3D&?  >=>Determine data MSCs with frontier MSC:hD?CAD?CDLC?x???D?C?  65:hD?DP"D?CСDLDP?v???D?CС?  68!67!66!65! hD=vDcDCD D=vDc@@D=vDc?BxA.?¼?DCD ?BR@?*p)?$dC hD=vDDDADDD=vD@@D=vDD?@ B0 ? 0 ?DAD? 0 ?@ B0 ?$dCοV hD=vCaDBCaD=vD;b@@D=vCa?AB s?¼ s?DBD;b?¼ s?AB s?$dhCm hD=vCQDBCQD=vC7@@D=vCQ?A$B s?$¼ s?DBC7?$¼ s?A$B s?$d,C hD=vCbDACbD=vC@@D=vCb?>ZBV?Z½V?DAC?Z½V?>ZBV?$cCԄ:hDXD ODXC DyD P?t???DXC ?  Data!MSCs!:hDXCDXC DC ?r???DXC ?  Frontier MSC 12F h%C`C/C\C,D-q.C,?C?C\C,? h&C`C/C\C,D-q.C,?C?C\C,? h'C`Ch*[C\CM*XD-q.Ch*X?C?C\Ch*X? h(C`C+C\C,D-q.C,?C?C\C,?h)Cb\CFCb\C8XCCFX@@p???Cb\C8X?  datah*Cb\CaCb\CSXCCaX@@n???Cb\CSX?  datah+Cb\C|Cb\CnXCC|X@@l???Cb\CnX?  datah,Cb\CCb\C,CC,@@j???Cb\C,?  datah-Cb\CTCb\CU,CCU,@@h???Cb\CU,?  datah.Cb\CCb\C,CC,@@f???Cb\C,?  datah/D .C|D .CnXD1.C|X@@d???D .CnX?  USTh0D .CD .C,D1.C,@@b???D .C,?  USTh1D .CTD .CU,D1.CU,@@`???D .CU,?  UST h2C\C,C\C2*XC\C,?C\C,?홚?B홚?C\C2*X?B홚?홚?$cC[ h3D q.C,D q.C2*XD q.C,?D q.C,?홚?B홚?D q.C2*X?B홚?홚?$cxC" h4C`C/C\Ch*XD-q.C,?C?C\C,? h5C`CM*UC\C2*XD-q.CM*X?C?C\CM*X? h6CaDCaļC)D41/D?Cæ?CaļD? h7CaļCҕ,CaļCҕ,D41-Cҕ,?CaļCҕ,?;33?C;33?D41-Cҕ,?C;33?;33?$cCb\CTCb\CU,C=CU,@@R???Cb\CU,?  MSC 30 h?Cb\CCb\C,CC,@@P???Cb\C,?  MSC 94h@D .CD .C,D1.C,@@N???D .C,?  USThAD .CFD .C8XD1.CFX@@L???D .C8X?  UST hBC`C/C\C,D-q.C,?C?C\C,?hCCb\CTCb\CU,CCU,@@J???Cb\CU,?  datahDD .CTD .CU,D1.CU,@@H???D .CU,?  UST hEC\C,C\C,C\C,?C\C,?,?A,?C\C,?A,?,̀?$cCZ hFD q.C,D q.C,D q.C,?D q.C,?,?A,?D q.C,?A,?,̀?$bCI :hGCCxC[C,D1q/C?CCx?A^@AF?Y4wCЍC"?AN@j??C\Cx?A?@P@?DFC=?AK̀?[@Q?D.Cx?AEـ?U@?D).C=?A(e@l/?t'`?D0C"??cE@?*3@?D1q.Cx??XX@?D1q.Cx?D?@Ia@@~$D*ƂC,?3`?A @EP?DƄCj?u_@0L?Ai ?DCj?_ @_@?^dA//?CCj?z&@zM?xOB̠E?|RC7C?yE!(K?| A,??wlC[C,?Ӓ,»AA?$aCSk* hbC`C/C\C,D-q.C,?C?C\C,?C\CC\CCˁC?F???C\C?  data hcC`DJC\C,D-q.DJ?C?C\DJ?C\DxC\CYCˁD?D???C\CY?  data hdC`D C\DJD-q.D ?C?C\D ?C\D lxC\DCˁD l?B???C\D?  data heC`DʘC\D D-q.Dʖ?C?C\Dʖ?C\D,xC\D CˁD,?@???C\D ?  data hfC\DʖC\C,C\Dʖ?C\Dʖ?,?B,?C\C,?B,?,̀?*D8 hgD q.DʖD q.C,D q.Dʖ?D q.Dʖ?,?B,?D q.C,?B,?,̀?)CrD q.Cb)D q.CT*XD Cb*X?>???D q.CT*X?  UST u hhD .Ch*XD .Ch*XD .C,@D .Ch*X?B??D .C,??B?)CD.CXD.CY,D.2CY,?<???D.CY,?  alGetFrameTime()  L?L?L?hiCb\CM*WCb\CM*WD1.Ch*X@@ Cb\CM*X????Cb\CY*X????Cb\C\*X?A??Cb\Ch*X????D1.Ch*X?A???D1.C\*X??A?D1.CY*X????D1.CM*X??A?(D .CD .C,D)C,?:???D .C,?  UST u + T*(65-27)D .DxD .C,D)D?8???D .C,?  UST u + T*(66-27)D .D JxD .DʖD)D J?6???D .Dʖ?  UST u + T*(67-27)D .D xD .D D)D ?4???D .D ?  UST u + T*(68-27)Cb\D,~Cb\D CD,@@2???Cb\D ?  MSC 68Cb\D l~Cb\DCD l@@0???Cb\D?  MSC 67Cb\DzCb\CY,CD@@.???Cb\CY,?  MSC 66Cb\CCb\C,CC,@@,???Cb\C,?  MSC 65Cb\CCb\C,CC,@@*???Cb\C,?  MSC 65C\CaC\CSXC+CaX?(???C\CSX?  MSC 27  hhhpC\ DJC\ D:DoDJ"?&???C\ D:?  >=>UST/MSC: Audio Output  >=>:hD?C6D?CD|C?$???D?C?  Pair has:! UST u! MSC 27:hD?DD?CqDD?"???D?Cq?  UST u + T*(68-27)!UST u + T*(67-27)!UST u + T*(66-27)!UST u + T*(65-27)! hD;DC2DjC[WD;DC2@@D;DC2?BKf?AKf?DjC[W?AKf?BKf?3^ hD=vC[D+C[D=vC7@@D=vC[?AYAm@?Ym@?D+C7?Ym@?AYAm@?3_ hD=wCD+CD=wD;b@@D=wC?@AVA?AV?D+D;b?AV?@AVA?3_L hD=vD D+DD=vD @@D=vD ?AaA?@Aa?D+D?@Aa?AaA?3_ hD=vD2D+D D=vD2@@D=vD2?RAt?ARt?D+D ?ARt?RAt?3_hhhCc3D2~Cc3D&DD2"? ???Cc3D&?  >=>Determine data USTs with UST/MSC pair 18Fhhh!C\ DJC\ D:DjV=DJ"????C\ D:?  >=>UST/MSC: Other Issues  >=>Hhhh#CcCD/BfCcCA4DnD/Bf"@???CcCA4?  >=>l  Input buffer overflow, output buffer underflow - frontier MSC becomes unstable - can use frontier MSC to detect  >=>l  Long-term clock drift - if devices not locked in hardware - must adjust data to fit in movie file - can use UST/MSC pair to detect 13FhhhC\ DJC\ D:D[DJ"????C\ D:?  >=>For More Info  >=>,hhhCcCD/BfCcCA4DnD/Bf"@???CcCA4?  >=>l  dmplay and dmrecord sample code" - dmedia_dev.src.examples"  >=>l  dmGetUST(3dm), vlGetFrontierMSC(3dm), tserialio(3), alGetFrameNumber(3dm), clGetNextImageInfo(3dm), mdIntro(3dm)  >=>"   1:FhhhJC\ DJC\ D:D[DJ"????C\ D:?  >=>For More Info  >=> hhhKCcCD/BfCcCA4DnD/Bf"@???CcCA4?  >=>l  Developer's Toolbox sample code  >=>"  - https://www.sgi.com  >=>l  Lurker's Guide:" - http://reality.sgi.com/cpirazzi/lg# - see "Time and Synchronization"# T))q$(>-71)!5"_#}$%&'()m*<*;T=,M+-./N011U2q893:!%E