/* Ċ Ġ* ĠCopyright Ġ@ Ġ 2 0 1 8 Ġ- Ġpresent Ġ 8 x 8 , ĠInc . Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ*/ Ċ Ċ package Ġorg . j its i . nl j . rtp . codec . vp 8 Ċ Ċ import Ġorg . j its i . nl j . Media Source Desc Ċ import Ġorg . j its i . nl j . Packet Info Ċ import Ġorg . j its i . nl j . rtp . codec . Video Codec Parser Ċ import Ġorg . j its i . nl j . util . StateChange Logger Ċ import Ġorg . j its i . rtp . extensions . to Hex Ċ import Ġorg . j its i . utils . logging 2 . Logger Ċ import Ġorg . j its i . utils . logging 2 . create Child Logger Ċ Ċ /** Ċ Ġ* ĠSome Ġ[ Vp 8 Packet ] Ġfields Ġare Ġnot Ġable Ġto Ġbe Ġdetermined Ġby Ġlooking Ġat Ġa Ġsingle ĠV P 8 Ġpacket Ġ( for Ġexample Ġthe Ġframe Ċ Ġ* Ġheight Ġcan Ġonly Ġbe Ġacquired Ġfrom Ġkey frames ). Ġ ĠThis Ġclass Ġupdates Ġthe Ġlayer Ġdescriptions Ġwith Ġinformation Ċ Ġ* Ġfrom Ġframes , Ġand Ġalso Ġdiag no ses Ġpacket Ġformat Ġvariants Ġthat Ġthe ĠJ its i Ġvideo bridge Ġwon 't Ġbe Ġable Ġto Ġroute . Ċ Ġ*/ Ċ class ĠV p 8 Parser ( ĊĠĠĠ Ġsources : ĠArray < Media Source Desc >, ĊĠĠĠ Ġparent Logger : ĠLogger Ċ ) Ġ: ĠVideo Codec Parser ( sources ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= Ġcreate Child Logger ( parent Logger ) ĊĊĠĠĠ Ġ// ĠCons istency ĊĠĠĠ Ġprivate Ġval Ġpicture Id State Ġ= ĠState Change Logger (" missing Ġpicture Ġid ", Ġlogger ) ĊĠĠĠ Ġprivate Ġval Ġextended Picture Id State Ġ= ĠState Change Logger (" missing Ġextended Ġpicture ĠID ", Ġlogger ) ĊĠĠĠ Ġprivate Ġval Ġtid Without Tl 0 Pic Idx State Ġ= ĠState Change Logger (" TID Ġwith Ġmissing ĠTL 0 PIC IDX ", Ġlogger ) ĊĊĠĠĠ Ġoverride Ġfun Ġparse ( packet Info : ĠPacket Info ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvp 8 Packet Ġ= Ġpacket Info . packet As < Vp 8 Packet >() ĊĠĠĠĠĠĠĠ Ġif Ġ( vp 8 Packet . height Ġ> Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġhandle Ġcase Ġwhere Ġnew Ġheight Ġis Ġfrom Ġa Ġpacket Ġolder Ġthan Ġthe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġlatest Ġheight Ġwe 've Ġseen . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind R tp Encoding Desc ( vp 8 Packet )?. let Ġ{ Ġenc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Layers Ġ= Ġenc . layers . map Ġ{ Ġlayer Ġ-> Ġlayer . copy ( height Ġ= Ġvp 8 Packet . height ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenc . layers Ġ= Ġnew Layers . to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpicture Id State . setState ( vp 8 Packet . has Picture Id , Ġvp 8 Packet ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Packet ĠData : Ġ${ vp 8 Packet . to Hex ( 8 0 )}" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġextended Picture Id State . setState ( vp 8 Packet . has Extended Picture Id , Ġvp 8 Packet ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Packet ĠData : Ġ${ vp 8 Packet . to Hex ( 8 0 )}" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtid Without Tl 0 Pic Idx State . setState ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvp 8 Packet . has TL 0 PIC IDX Ġ|| Ġ! vp 8 Packet . has Temporal Layer Index , Ġvp 8 Packet ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Packet ĠData : Ġ${ vp 8 Packet . to Hex ( 8 0 )}" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ