/* Ċ Ġ* ĠCopyright Ġ 2 0 0 2 - 2 0 1 9 ĠD rew ĠNo akes Ġand Ġcontributors Ċ Ġ* Ċ Ġ* ĠĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* ĠĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* ĠĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* ĠĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ* ĠMore Ġinformation Ġabout Ġthis Ġproject Ġis Ġavailable Ġat : Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttps :// d rew no akes . com / code / ex if / Ċ Ġ* ĠĠĠ Ġhttps :// github . com / d rew no akes / metadata - extractor Ċ Ġ*/ Ċ package Ġcom . d rew . metadata . mov . media Ċ Ċ import Ġcom . d rew . lang . Sequential Reader Ċ import Ġcom . d rew . metadata . Metadata Ċ import Ġcom . d rew . metadata . mov . Quick Time Atom Types Ċ import Ġcom . d rew . metadata . mov . Quick Time Context Ċ import Ġcom . d rew . metadata . mov . Quick Time Media Handler Ċ import Ġcom . d rew . metadata . mov . atoms . Atom Ċ import Ġcom . d rew . metadata . mov . atoms . Sound Information Media Header Atom Ċ import Ġcom . d rew . metadata . mov . atoms . Sound Sample Description Atom Ċ import Ġjava . io . IOException Ċ Ċ /** Ċ Ġ* Ġ@ author ĠPay ton ĠGar land Ċ Ġ*/ Ċ class ĠQuick Time Sound Handler ( metadata : ĠMetadata , Ġcontext : ĠQuick Time Context ) Ġ: ĠQuick Time Media Handler < Quick Time Sound Directory >( metadata , Ġcontext , ĠQuick Time Sound Directory ()) Ġ{ ĊĠ Ġoverride Ġval Ġmedia Information : ĠString ĊĠĠĠ Ġprotected Ġget () Ġ= ĠQuick Time Atom Types . ATOM _ SOUND _ MEDIA _ INFO ĊĊĠ Ġ@ Throws ( IOException :: class ) ĊĠ Ġpublic Ġoverride Ġfun Ġprocess Sample Description ( reader : ĠSequential Reader , Ġatom : ĠAtom ) Ġ{ ĊĠĠĠ Ġval Ġsound Sample Description Atom Ġ= ĠSound Sample Description Atom ( reader , Ġatom ) ĊĠĠĠ Ġsound Sample Description Atom . add Metadata ( directory ) ĊĠ Ġ} ĊĊĠ Ġ@ Throws ( IOException :: class ) ĊĠ Ġpublic Ġoverride Ġfun Ġprocess Media Information ( reader : ĠSequential Reader , Ġatom : ĠAtom ) Ġ{ ĊĠĠĠ Ġval Ġsound Information Media Header Atom Ġ= ĠSound Information Media Header Atom ( reader , Ġatom ) ĊĠĠĠ Ġsound Information Media Header Atom . add Metadata ( directory ) ĊĠ Ġ} ĊĊĠ Ġ@ Throws ( IOException :: class ) ĊĠ Ġoverride Ġfun Ġprocess TimeTo Sample ( reader : ĠSequential Reader , Ġatom : ĠAtom , Ġcontext : ĠQuick Time Context ) Ġ{ ĊĠĠĠ Ġcontext . time Scale ?. let Ġ{ ĊĠĠĠĠĠ Ġdirectory . set Double ( Quick Time Sound Directory . TAG _ AUDIO _ SAMPLE _ RATE , Ġit . toDouble ()) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ