/* Ċ Ġ* Ġ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 . transform . node . incoming Ċ Ċ import Ġio . kot est . assertions . fail Ċ import Ġio . kot est . core . spec . Isolation Mode Ċ import Ġio . kot est . core . spec . style . Should Spec Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġorg . j its i . nl j . Packet Info Ċ import Ġorg . j its i . nl j . format . Payload Type Ċ import Ġorg . j its i . nl j . format . Vp 8 Payload Type Ċ import Ġorg . j its i . nl j . resources . node . on Output Ċ import Ġorg . j its i . nl j . rtp . R tp Extension Ċ import Ġorg . j its i . nl j . rtp . R tp Extension Type Ċ import Ġorg . j its i . nl j . rtp . S src Association Type Ċ import Ġorg . j its i . nl j . rtp . codec . vp 8 . Vp 8 Packet Ċ import Ġorg . j its i . nl j . stats . Node Stats Block Ċ import Ġorg . j its i . nl j . util . ReadOnly Stream Information Store Ċ import Ġorg . j its i . nl j . util . R tp Extension Handler Ċ import Ġorg . j its i . nl j . util . R tp Payload Types Changed Handler Ċ import Ġorg . j its i . rtp . rtp . R tp Packet Ċ import Ġorg . j its i . utils . logging 2 . create Logger Ċ Ċ class ĠVideo Parser Test Ġ: ĠShould Spec () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġisolation Mode (): ĠI sol ation Mode ? Ġ= ĠI sol ation Mode . Instance Per Leaf ĊĊĠĠĠ Ġprivate Ġval Ġstream Information Store Ġ= Ġobject Ġ: ĠReadOnly Stream Information Store Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġr tp Extensions : ĠList < R tp Extension > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġr tp Payload Types : ĠMap < Byte , ĠPayload Type > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmutable Map Of ( 1 0 0 . to Byte () Ġto ĠV p 8 Payload Type ( 1 0 0 . to Byte ())) ĊĠĠĠĠĠĠĠ Ġoverride Ġvar Ġsupports F ir : ĠBoolean Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġoverride Ġvar Ġsupports P li : ĠBoolean Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġoverride Ġvar Ġsupports Rem b : ĠBoolean Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġoverride Ġvar Ġsupports T cc : ĠBoolean Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon R tp Extension Mapping ( rtp Extension Type : ĠR tp Extension Type , Ġhandler : ĠR tp Extension Handler ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġno - op ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon R tp Payload Types Changed ( handler : ĠR tp Payload Types Changed Handler ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġno - op ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġprimary Media S src s : ĠSet < Long > Ġ= Ġset Of ( 1 2 3 L , Ġ 4 5 6 L , Ġ 7 8 9 L ) ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġprimary Video S src s : ĠSet < Long > Ġ= Ġset Of ( 1 2 3 L , Ġ 4 5 6 L ) ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġreceive S src s : ĠSet < Long > Ġ= Ġset Of ( 1 2 3 L , Ġ 4 5 6 L , Ġ 7 8 9 L , Ġ 3 2 1 L , Ġ 6 5 4 L ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Local Primary S src ( secondary S src : ĠLong ): ĠLong ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Remote Secondary S src ( primary S src : ĠLong , Ġassociation Type : ĠS src Association Type ): ĠLong ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetNode Stats (): ĠNode Stats Block Ġ= ĠNode Stats Block (" dummy ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġparser Ġ= ĠVideo Parser ( stream Information Store , Ġcreate Logger ()) ĊĊĠĠĠ Ġprivate Ġval Ġvp 8 Packet Buf Ġ= Ġorg . j its i . rtp . extensions . byte array . byte ArrayOf ( ĊĠĠĠĠĠĠĠ Ġ// ĠV = 2 , P = false , X = true , CC = 0 , M = false , PT = 1 0 0 , Seq Num = 1 6 5 3 5 ĊĠĠĠĠĠĠĠĠ 0 x 9 0 , Ġ 0 x 6 4 , Ġ 0 x 4 0 , Ġ 0 x 9 7 , ĊĠĠĠĠĠĠĠ Ġ// ĠTimestamp : Ġ 3 8 9 9 0 6 8 4 4 6 ĊĠĠĠĠĠĠĠĠ 0 xe 8 , Ġ 0 x 6 7 , Ġ 0 x 1 0 , Ġ 0 x 1 e , ĊĠĠĠĠĠĠĠ Ġ// ĠS SRC : Ġ 2 8 2 8 8 0 6 8 5 3 ĊĠĠĠĠĠĠĠĠ 0 xa 8 , Ġ 0 x 9 c , Ġ 0 x 2 a , Ġ 0 xc 5 , ĊĠĠĠĠĠĠĠ Ġ// Ġ 1 Ġextension ĊĠĠĠĠĠĠĠĠ 0 xbe , Ġ 0 xde , Ġ 0 x 0 0 , Ġ 0 x 0 1 , ĊĠĠĠĠĠĠĠĠ 0 x 5 1 , Ġ 0 x 0 0 , Ġ 0 x 0 2 , Ġ 0 x 0 0 ĊĠĠĠ Ġ) Ġ+ Ġorg . j its i . rtp . extensions . byte array . byte ArrayOf ( ĊĠĠĠĠĠĠĠĠ 0 x 0 0 , Ġ 0 x 0 0 , Ġ 0 x 0 0 , Ġ 0 x 0 0 , ĊĠĠĠĠĠĠĠĠ 0 x 0 0 , Ġ 0 x 0 0 , Ġ 0 x 0 0 , Ġ 0 x 0 0 , ĊĠĠĠĠĠĠĠĠ 0 x 0 0 , Ġ 0 x 0 0 , Ġ 0 x 0 0 , Ġ 0 x 0 0 , ĊĠĠĠĠĠĠĠĠ 0 x 0 0 , Ġ 0 x 0 0 , Ġ 0 x 0 0 , Ġ 0 x 0 0 , ĊĠĠĠĠĠĠĠĠ 0 x 0 0 , Ġ 0 x 0 0 , Ġ 0 x 0 0 , Ġ 0 x 0 0 , ĊĠĠĠĠĠĠĠĠ 0 x 0 0 , Ġ 0 x 0 0 , Ġ 0 x 0 0 , Ġ 0 x 0 0 ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġvp 8 Packet Ġ= ĠV p 8 Packet ( vp 8 Packet Buf , Ġ 0 , Ġvp 8 Packet Buf . size ) ĊĠĠĠ Ġprivate Ġval Ġpacket Info Ġ= Ġmock k < Packet Info >( relax ed Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpacket As < R tp Packet >() Ġ} Ġreturns Ġvp 8 Packet ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpacket Ġ} Ġreturns Ġvp 8 Packet ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext (" When Ġparsing Ġa ĠV P 8 Ġpacket ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext (" with Ġno Ġencoding Ġsign aled ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparser . on Output Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Should Ġnot Ġforward Ġthe Ġpacket ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparser . process Packet ( packet Info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ