/* Ċ Ġ* Ġ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 . codec . vp 8 . Vp 8 Utils Ċ import Ġorg . j its i . nl j . rtp . Video R tp Packet Ċ import Ġorg . j its i . nl j . util . c warn Ċ import Ġorg . j its i . nl j . util . getLogger Ċ import Ġorg . j its i . rtp . extensions . byte array . hashCode Of Segment Ċ import Ġorg . j its i _ modified . impl . ne ome dia . codec . video . vp 8 . De Packet izer Ċ Ċ class ĠV p 8 Packet ( ĊĠĠĠ Ġdata : ĠByteArray , ĊĠĠĠ Ġoffset : ĠInt , ĊĠĠĠ Ġlength : ĠInt Ċ ) Ġ: ĠVideo R tp Packet ( data , Ġoffset , Ġlength ) Ġ{ ĊĠĠĠ Ġvar ĠTL 0 PIC IDX : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= ĠDe Packet izer . VP 8 Payload Descriptor . get TL 0 PIC IDX ( buffer , Ġpayload Offset , Ġpayload Length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! De Packet izer . VP 8 Payload Descriptor . set TL 0 PIC IDX ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer , Ġpayload Offset , Ġpayload Length , Ġvalue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . c warn Ġ{ Ġ" Failed Ġto Ġset Ġthe ĠTL 0 PIC IDX Ġof Ġa ĠV P 8 Ġpacket ." Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġpicture Id : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠDe Packet izer . VP 8 Payload Descriptor . get Picture Id ( buffer , Ġpayload Offset ) ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! De Packet izer . VP 8 Payload Descriptor . set Extended Picture Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer , Ġpayload Offset , Ġpayload Length , Ġvalue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . c warn Ġ{ Ġ" Failed Ġto Ġset Ġthe Ġpicture Ġid Ġof Ġa ĠV P 8 Ġpacket ." Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġtemporal Layer Index : ĠInt Ġ= Ġ- 1 ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġis Ġcurrently Ġused Ġas Ġan Ġoverall Ġspatial Ġindex , Ġnot Ġan Ġin - band Ġspatial Ġquality Ġindex Ġa Ġla Ġvp 9 . Ġ ĠThat Ġis , ĊĠĠĠĠ Ġ* Ġthis Ġindex Ġwill Ġcorrespond Ġto Ġan Ġoverall Ġsim ul cast Ġlayer Ġindex Ġacross Ġmultiple Ġsim ul cast Ġstream . Ġ Ġe . g . ĊĠĠĠĠ Ġ* Ġ 1 8 0 p Ġstream Ġpackets Ġwill Ġhave Ġ 0 , Ġ 3 6 0 p Ġ-> Ġ 1 , Ġ 7 2 0 p Ġ-> Ġ 2 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġspatial Layer Index : ĠInt Ġ= Ġ- 1 ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġis Keyframe Ġ= ĠDe Packet izer . is Key Frame ( data , Ġpayload Offset , Ġpayload Length ) ĊĠĠĠĠĠĠĠ Ġif Ġ( is Keyframe ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspatial Layer Index Ġ= ĠV p 8 Utils . get Spatial Layer Index From Key Frame ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtemporal Layer Index Ġ= ĠV p 8 Utils . get Temporal Layer Id Of Frame ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFor Ġ[ Vp 8 Packet ] Ġthe Ġpayload Ġexclude s Ġthe ĠV P 8 ĠPayload ĠDescriptor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġpayload Verification : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr tp Payload Length Ġ= Ġpayload Length ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr tp Payload Offset Ġ= Ġpayload Offset ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvp 8 pd Size Ġ= ĠDe Packet izer . VP 8 Payload Descriptor . getSize ( buffer , Ġr tp Payload Offset , Ġr tp Payload Length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvp 8 Payload Length Ġ= Ġr tp Payload Length Ġ- Ġvp 8 pd Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠhashCode Ġ= Ġbuffer . hashCode Of Segment ( payload Offset Ġ+ Ġvp 8 pd Size , Ġr tp Payload Offset Ġ+ Ġr tp Payload Length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" type = Vp 8 Packet Ġlen =$ vp 8 Payload Length ĠhashCode =$ hashCode " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclone (): ĠV p 8 Packet Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclone Ġ= ĠV p 8 Packet ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclone Buffer ( BYTES _ TO _ LEAVE _ AT _ START _ OF _ PACKET ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBY TES _ TO _ LEAVE _ AT _ START _ OF _ PACKET , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlength ) ĊĠĠĠĠĠĠĠ Ġclone . is Keyframe Ġ= Ġis Keyframe ĊĠĠĠĠĠĠĠ Ġ// ĠTODO Ġcan Ġwe Ġask Ġthe Ġsuperclass Ġto Ġclone Ġits Ġown Ġfields ? ĊĠĠĠĠĠĠĠ Ġclone . quality Index Ġ= Ġquality Index ĊĠĠĠĠĠĠĠ Ġclone . spatial Layer Index Ġ= Ġspatial Layer Index ĊĠĠĠĠĠĠĠ Ġclone . temporal Layer Index Ġ= Ġtemporal Layer Index ĊĊĠĠĠĠĠĠĠ Ġreturn Ġclone ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlogger Ġ= Ġget Logger ( Vp 8 Packet :: class ) ĊĠĠĠ Ġ} Ċ } Ċ