From ffca82f981e975d302c6480ba9cbce6e05260e74 Mon Sep 17 00:00:00 2001 From: KingLucius Date: Tue, 25 Mar 2025 21:07:34 +0200 Subject: [PATCH 1/9] Bugfix: Handle seekhead for cues on mkv files. --- .../exoplayer/e2etest/MkvPlaybackTest.java | 3 +- .../extractor/mkv/MatroskaExtractor.java | 35 +- .../extractor/mkv/MatroskaExtractorTest.java | 11 + .../media/mkv/sample_recursive_seekhead.mkv | Bin 0 -> 109503 bytes .../mkv/sample_recursive_seekhead.mkv.dump | 524 ++++++++++++++++++ 5 files changed, 570 insertions(+), 3 deletions(-) create mode 100644 libraries/test_data/src/test/assets/media/mkv/sample_recursive_seekhead.mkv create mode 100644 libraries/test_data/src/test/assets/playbackdumps/mkv/sample_recursive_seekhead.mkv.dump diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/MkvPlaybackTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/MkvPlaybackTest.java index bc557596504..457e7e1b00d 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/MkvPlaybackTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/MkvPlaybackTest.java @@ -57,7 +57,8 @@ public static ImmutableList mediaSamples() { "sample_with_overlapping_srt.mkv", "sample_with_vtt_subtitles.mkv", "sample_with_null_terminated_vtt_subtitles.mkv", - "sample_with_vobsub.mkv"); + "sample_with_vobsub.mkv", + "sample_recursive_seekhead.mkv"); } @ParameterizedRobolectricTestRunner.Parameter public String inputFile; diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java index 405951074c6..8ea5f9b3fa3 100644 --- a/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java +++ b/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java @@ -456,6 +456,9 @@ public static ExtractorsFactory newFactory(SubtitleParser.Factory subtitleParser // Cue related elements. private boolean seekForCues; + private boolean seekForSeekContent; + private long seekPositionAfterSeekingForHead = C.INDEX_UNSET; + private long seekHeadContentPosition = C.INDEX_UNSET; private long cuesContentPosition = C.INDEX_UNSET; private long seekPositionAfterBuildingCues = C.INDEX_UNSET; private long clusterTimecodeUs = C.TIME_UNSET; @@ -764,6 +767,10 @@ protected void startMasterElement(int id, long contentPosition, long contentSize if (seekForCuesEnabled && cuesContentPosition != C.INDEX_UNSET) { // We know where the Cues element is located. Seek to request it. seekForCues = true; + } else if (seekForCuesEnabled && seekHeadContentPosition != C.INDEX_UNSET) { + // We do not know where the cues are located, however we have a seek-head entry + // we have not yet visited + seekForSeekContent = true; } else { // We don't know where the Cues element is located. It's most likely omitted. Allow // playback, but disable seeking. @@ -816,9 +823,16 @@ protected void endMasterElement(int id) throws ParserException { if (seekEntryId == UNSET_ENTRY_ID || seekEntryPosition == C.INDEX_UNSET) { throw ParserException.createForMalformedContainer( "Mandatory element SeekID or SeekPosition not found", /* cause= */ null); - } - if (seekEntryId == ID_CUES) { + } else if (seekEntryId == ID_SEEK_HEAD) { + seekHeadContentPosition = seekEntryPosition; + } else if (seekEntryId == ID_CUES) { cuesContentPosition = seekEntryPosition; + + // We are currently seeking from the seek-head, so we seek again to get to the cues + // instead of waiting for the cluster + if (seekForCuesEnabled && seekPositionAfterSeekingForHead != C.INDEX_UNSET) { + seekForCues = true; + } } break; case ID_CUES: @@ -1936,6 +1950,13 @@ private SeekMap buildSeekMap( * @return Whether the seek position was updated. */ private boolean maybeSeekForCues(PositionHolder seekPosition, long currentPosition) { + if (seekForSeekContent) { + seekPositionAfterSeekingForHead = currentPosition; + seekPosition.position = seekHeadContentPosition; + seekForSeekContent = false; + return true; + } + if (seekForCues) { seekPositionAfterBuildingCues = currentPosition; seekPosition.position = cuesContentPosition; @@ -1949,6 +1970,16 @@ private boolean maybeSeekForCues(PositionHolder seekPosition, long currentPositi seekPositionAfterBuildingCues = C.INDEX_UNSET; return true; } + + // After we have seeked back from seekPositionAfterBuildingCues seek back again to parse the + // rest of the file. This ends the double jump that is preformed when the beginning metadata + // only contains a ID_SEEK_HEAD without a ID_CUES. + if (sentSeekMap && seekPositionAfterSeekingForHead != C.INDEX_UNSET) { + seekPosition.position = seekPositionAfterSeekingForHead; + seekPositionAfterSeekingForHead = C.INDEX_UNSET; + return true; + } + return false; } diff --git a/libraries/extractor/src/test/java/androidx/media3/extractor/mkv/MatroskaExtractorTest.java b/libraries/extractor/src/test/java/androidx/media3/extractor/mkv/MatroskaExtractorTest.java index f267eff6aa1..b92d8783ba9 100644 --- a/libraries/extractor/src/test/java/androidx/media3/extractor/mkv/MatroskaExtractorTest.java +++ b/libraries/extractor/src/test/java/androidx/media3/extractor/mkv/MatroskaExtractorTest.java @@ -140,6 +140,17 @@ public void mkvSample_withNullTerminatedVttSubtitles() throws Exception { simulationConfig); } + // https://github.com/androidx/media/issues/1143 + @Test + public void mkvSample_withRecursiveSeekHead() throws Exception { + ExtractorAsserts.assertBehavior( + getExtractorFactory(subtitlesParsedDuringExtraction), + "media/mkv/sample_recursive_seekhead.mkv", + getAssertionConfigWithPrefix( + "media/mkv/sample_recursive_seekhead.mkv", subtitlesParsedDuringExtraction), + simulationConfig); + } + @Test public void mkvSample_withVorbisAudio() throws Exception { ExtractorAsserts.assertBehavior( diff --git a/libraries/test_data/src/test/assets/media/mkv/sample_recursive_seekhead.mkv b/libraries/test_data/src/test/assets/media/mkv/sample_recursive_seekhead.mkv new file mode 100644 index 0000000000000000000000000000000000000000..9714113e445dfac33209e8fbb0265f9bdfb4c95b GIT binary patch literal 109503 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 *!d-89skw?3TYHb8uTj7WV?@z#so_T1 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 z zd$kLRP*J%w>*5OMXeO?2u&ny0byjDMSb5clJ-U73ca@CGiYF~!iIX~^-7Fj_RI7yj zK=$Y^Y6P_4Wl^|)hQkE4bQP)&vM_7=u<$&p;RCPT?HAkW7U`=8av1^!s?AeScOYhi=du{htjNz*lo02J zfXOfYzK2r20Q1vj_lKzO{KS)gH$2xOnC zJKmg+G6XH{ZXxCytxOBd3``0Ki%kT)s`Dry=ilcix zuc0nObs3vuOHos^9Xh53AJTjVWgn#uBe{&gJ?q0wH>YIytwr|Kjhbu{w3luq%?Bol zAKbI~@%`0hz-1=go`k_Z3&B~I(ZwFPtjVoJ!WbFi2z(o{en{*c>&~0Tig&yUby;sm z`4u_Tfai)#>=XyNEeSK5nzFLcE`8V7K^Kfh#Ll*pK8r)eDk&01PTEvn1VT>av`HxF*)z?O`mswDr!RzUF4k%C`J1r-H(U16ejxMm2yO82s~JG zjhgPYqK>SYB2Q@{toWqgPhanF$@g-KKtZB+E81vBNFgq!C^sN^IAF~~0rDClae4px zZ!vcLJK4ECDlgFY=m!%ahOEkVr3V-MBmd5>XNrYIUNgllP7x8D0ah8M_S%P=2*NQD zQn3X=I7AMH!)q~InoK863|(zrcQHNci%NOJd@l#SHmF^JTT&fF zDxBIYcT2SaTcFbp(0ylW4T)S-&R7M*QZq+F=0FC7%*XeDA(RYXZ*n@j!(oQO@{}t=Tk>sFOBf7u94TDD8)T#if}ZGOq2- z$a|aOQV|w87c0Y_-`y9XThsdOen7H!F#90_|Ly=EY%mk9a)O|bcW0vL319&q?|z1} zMkV8qQzrESB<;uV!BkSPtVFXH{;212awm(EJNlfpcqkSLo1%5((#F9RvQH-&`oxo$ zL(1I0AtH@Wha4JWYT+Qg6=f#;GonTC_@@2Lg~YXy2=P)BM$9~CG^&t{)4`$@j-k)8 znv$0z(4CrsD@Y-MrAYwwPzTzUxxJ`-IL0jQZ(c z&F$ndMLqkKmALj)#w7%iT9;?%MidQya`vF|f|x)RF%U<;#`ZhDvQlJqqsID|a*H_K zAw4=`@F=usazg0cvM7v2(7T&+HtSI7x9?pLpXN=ZvL6`owjAN6f|cY_WbPEsK5he` zM@c`VzD+tbH_9bQEJbcmJ}Ev#G03@P-NtpI;~|N9z0m8%)B)SDNktogERlzHgdISR`i+N@4OLlGPg;#xwq! zI8#&1x{)V&QZEI95k?k%UV8q63mg&-HWD{H4ASbP}o z&cC#~#0H|-joWTv`q=#xA|bY!sh6W$v@elX^zbnFM{E(413M2@a8gRj!w-i9aO_5k zM4q66j!Htt1Le*uo%{9Ns+3|$6X|Ktcw(#wIo~7=+k>#GEG4w3@cR{-CP&yS728?H z#F&624xTQA@%;|7L})ahfcAD%i>aiA!n;%uZ_sV4U8WSd#|l{KGQ%*${BIkKF3Lc{ z_)~=wMq7x3HGD$zQ0>EyfLvb@lHG~%>#9qL2&~sml(t=6^CDo1fTA??t_dDIBhdH? zJ1tD?W;~&I=ff}C(R;@KtE^DEa(lXlb{F^!M-xg?t4&CWGc8T+zd-BDe>BOMNi=h; z*-{7}?*eSAi02~A&sb8HLk%x+!^`2GQC!tGgp9izovo1f!8UMorp1-ZwYrXI!G;M# z+WUDqn8F1Dvy3oi`RUC0U|RXx_m@eD3E0*j&NSn4k2dW0Pi&&L{hydO+Q@ZgX#3lY zf#px1Fyy)^yFLLAI$Ap%2$i+pC)G}kUofm%#RH;G_^wU36&=h9+p6ak-+?H*V$`?PpOup zaDT)x`3M7f(b%;mX3ftOy(6I7ias4~<2I(!ewo{|70pab@tfXOG7*bxD>4$_y1Sgf zPvs+}Krd0)oVrr{qZ(|0AXtiog&(X!e$iAq^@?g#wY7s;WD?yG&>zARV|$qCloE9J zv}La+BZ~-*VK2?r2J&vHH4V}ZxRMdom%~%A_nH&u#Vg}NOS zp)SF-wqA=mC0ahTFLVb-XBtsNmdO{JA{Izr=cz|&9Pong- z$O>CNnpLmF=`T0;&7WJ!%pc=k&F_g^6mullw~MYubG!Ex{8X6Uj_~1+$IQZtU0DxQ4Q3|fWdm|{RAmXGg3^66^j0GhD|s)$i`ok2<*y6|zZr#s&(mbkp05j z)LMK#`Y|*#!pNl7d`rJ)HHIhG7h*^}zbJ#|^v;8^#iv!);3cYc9tk+PXD5czUU&jh zV|dNpsU&*y@Ts(A@>1yF$G(}e$D+mBcY0QK_NO3My40LRA^yowhQ;JJ_Kxx44{~8t z)G{c0PqlO1UvE*k_U_W3b<*htFRx)~zjHY|nweQ;+xTbI`xvi3Nc%uULB83l#K_EO z&x`O0S!B|Ul}}m%_rTUd_hWiYz{LnC20&iu9j!cho!2@PzTBuiI@{VUP(8FswYy|Mw6Zv?6`SGl>6jWsAIv*)oo(8FdZqga z(%DjKgemdx#v|gwZWg?CH(g{GBZ4982G$m`>E-W}XNHuCymZImO3@a?XH1Kw4cp2L7>YI)oEH? z1(q5EM!KR zgf=eiY9cktNx)G+8m@V+zvacswZRF!Y-z1v4=q^@UX1h~v=MiK_7)C7{sZ8{4fe;@Dte?k31@j++^MLVT+|RNl4S$gq9GxLU``xb4iUPHy%vd_%_zuu|=!QZ2x3ERfNKaRzD^6b!)N zQsWPFUFxD}F=n6Cnk z)25ff1Ma-b9Kft@SDJ>ib%>S~(L9L^OLBRd6igYKvY97soS!KuDTEmjL;aHM#QXXB zy3%B6@(6BJW_rlZ>~58+_YxF8)~F=SQ%SjyI%7g-GIZLY%k*7~L^8HP z>TC(g8<-478+x%!dD-4%0M8!t`w&&l-)TTuk??QYl<-$#0j~?@8e1w4>UVc+ z^pyb}aebyZ;n=1GhiC&bnCtO~d;+BY0kGu0!Jp|%#C8tQQIZWuZQrIOQ6U%+W$j$- z(x%3GOAeS7w5NJ{AMsX@*)t>9(23q`jv+L7k8Cudu>KHW^2&9skgAN=8i5iVEfXt( z-?)I0x5|?+@F$Rn`pQSGxx7H~DvZLiI_FUwYQeLaC1Uz9L6fF6QK=rpm}_#7g?j9b zXJ69m=!>XUQOA{ImrW5QWTQ0(!Uq_Nx4;pa8?z@6Fw$mwv4v?sc7~WqeLSWF{~KrR zQI+clO4IJ<>B_nhAxLf9d&odW%JjWoy0D<5wvdHkI}Onf3HBk^))nNH}-9FKjpYHkAAYcqRfERp-Q7fQqO791DmIr)!UmG@K^= zQPPR@4GT^vz_YaC?Qp2y@u8~hJk~RHpYrk91EClZvrM>Ye({fSP5zMFViACwJO8&K z5ZY7C#F}{>$)c1`p*W!j<*h6J*>rP;~kZi(G_U_fT4vgGQ)`e_P8Vrg2wh0@VH>OZsJRdInjb4J-(kK3q1|KvkJBYnRMMGM-NE9!S z-6ZEuW%5WT>3;4ddUF7(l)iajTYtl&4+`R6;b~4_r}ceqL?{=8EfQM(A8k1Um>c9Q zwA*PNa6QwH%@zhGu-~WdQn_9Z7A*hwM4*@vEnUi(&Yqv#bp!V{cQTt|3H7aS?R&RkVPwf!9nn^$n!!0VdG zyYU&dZm~j>@GYm8dggpB3S!{sC|W_&7rUbj_Kp6xK7=U?Lq4;h=Zz_GgjtD6UWx>% z>2MLT^5`Aqg34;Vlb6K!2&=tR8=&AT48saPQURo>!`ii)?s`51DfY7x6wp1QODX>i znBS3RLZu6JA?8XZbEp*K=0QDHQH_umTpG=SR1<2zPS;$>2dDS5Pm|eVno`MJ;2=d9 zMJIza-XdN(G3T~4uK1LLKKAWUrHVwnW;vZZ`d+*8PINjV70bfLPUvAg;$2-4kyUdC zV^^b&(I63Rw$DL;kPW;+X z4u?g*I+Anmcvu9XJ#kKt%obQPK(f_AmVt+eWOi*v;g6E3t8nRC!J~!?8N6IRi{tjDy5(Vzsn&pGA|8)cy!8zpdaYcDZ z1S!rmyu7#wyo6qp3W^|AJruL5y79y@Hp?j8a2TJz;Sm9(Mp@{%Fp7o`?@u&&7wSZy zhaQTaLU5*_unhUx6!6Tm-h~z*e(2`3*H4ZjU=jX`?6G!>;(w@T=V`!2kr4Fn8~pbL z1PquPVkxwnb!iRwK=1|wX9g=s@!eWD$sxxpw|rw!k33XZU%;DAge$Z`u3>s*`Gy6z zOX;W+dTr1uxRz7CL3HlR!h23)svLDrvi?y!k_W;}73QbbG5@)|^qn_?!guFORLT9h z@f9bKsFhTtyrcnhh_u`bV6z?gl)aR5dX9j@S!e+p9+lBNTLcyFsQ^aqUm)vm`&z;Sn=FppZYfs`5&W5 z^lKDV`2I(gT84fdyUACSx9Kiu*jlKqRid&ooGaB1rGIT>dXc5usWbX#VvcnHliiDF9MbPkgoC-#c5z=y9+rBffK9wk0iZ`xu>wU8jVQ ztPGJ}h}fipoCnevAW@BQ%VPA!)BlwzP=&TD973KeZe5|x+T8KN&Xh=QKjGiN;E}2I z$%Qt!YO1$(0@FAXtkE3siZCw8bK6SUd6NHoRJ}dUpU)MH{z7Rk)a>B*d{_LIQovCF z8UvMcsZB2%w3PDgWSses8UZ}c&)6-OlqcmQRK0su^#MZWZt^;U-=8_85_@-LXDC?r`JLY%H<9&uYcsK+zW$e)l_A*9 z0`?V_oAe`7KHhUCpur;QOl|Xe!>LBI-o7N?L%jcUVZ>HL)RCsMQZ+AnqiNYpoi>w+ z2VKO)VuV8=E*KZdvLN~p4aTso-|!*S0Pv6pzHC8)_41q4q(~?nS`h)6XS~ZtVhPI< zvX=zt12HSG*t_8meB^jIgGW%{Bht`(iNM`TijWY*Dkl7?HmKo})zcbbQC1w2Z40T= zSb>$OM}V~JUUcK~?z_bGTyR zP3Cb6oj;x~<^9HcoywN-cztwd>FWN!JpR9|HZG7?H^s_043Vh|e$$7-0QGIctpoonYP%Q!|3giO=wbQ2iBB{eW|^ zd|ejhZ`mebmxu3}E_tp#F&7h{K}-_ELaoMmni4{bDDfN^Rqc)foO?prjIbRd8!H!{ z^d`Fnn-3G$xyAjKJOtpK7X%3TL84lsa`U24V&mu{HI|Lfo(RAZeh@G-m0YRB*GL8h z+8_uhrs`|69|{irLe;-pDX<25?{SKkJgGcCk5Q^}dE@RdfM_wtU&DaFVKNBsn0tAx9nRJ80 zLwV=3>}=kK;84d2_v8W7Q}AA5#TT{Q0zWPbiy5sg06o8^OUa&`amHDF!e&f)l6tUToQtKYHJin;x5XeU2%+H3^l!5Vbq@m70SXX!fJAO98CHW$jN>%aD$r zuN$a@oUMg6(PSdJ(%5z$T~y2jj#ll_Y3At$q!9vCOf&q|DwCo}A_NO^dt-pGE<3@$ zG6!aa`gMdn+5xZa#8{3gi+|PYYKa@04ROVJPKHY@t%d+H`;LwVGqN>T==^*SGuZN7 z(%W=0SM6O#ai;9fU`_n?$z!Cg5}(1nB;}ZbggqKsLAEO`{s4{rMH(mp0NB6#g#ja& z87WyVXr3Vh5f|eNPPIqpom$x1S?&@&C!!h(x@PfP*>x{~Fbt1bg=d=G%>b$BC<(QE zd+=SeEyt=xsu)rDoc$d=^{iZl-?5uwskY?9XNZ&4_QyS1JfG*u0PdNRP6lz0eXSES z%-Y?mWyHZg?e^KAgKd0N`vF+rI}0uv@(%KK9aFn)6B*Z?@<>OMv*GP~KwPHiI`Ouc$Fl8gy_@-R`Wu2N zc@YwYr4JR+<@$M;zNU6rtL|US9UHf(uZX~N_~AO4X;ZhE|e_k7vm?Y;Fp3IbeG>* znUwB!_1YO<)jb)Jn4|{ho4&J?u*pS3k~2Xg-Y9^A^xSpjKeTdY-Rj_f=gnqC+`BHhk<=gTu31K$Ua}Gg}DcA2oenL$e`~er`Y$ps5X;=u=XFB znr)4~NmzPF2qX8=o{cr^*COEU4N&TuS~_|cm;Uu}b3$&pPP=E9unjETTdqSa;T zaFdXyFAw}f!DxCZ<1SYOo>Bx_z>(&xKH{j0c$!f!CLCs%xtBgGH)JVAY;;bJUVfA3Q8pS{Bt?j&{P>3slBXk^md7A|)m~gODxk9<9iqzM=tQNGV zLKzBXGTG^SmY{2PB2H&9yGRv;{pr8DR zeu6cnVkYAPnnJFEl&nPfnJ}jlq-|Zz98TIR+l<$PA)&Z{1Uy+xu|ZQRPR) z=RPU+>uV80l-XbcQ9rf6(eYD;$%SwznY;v#Uw(Xy#}dd27J*cdO9P*TVoTxXkT}IV zo4i-`td#@W^ttXc`yDyoFI>4(n~Y~c-eY|r!F6mC)5eWS5iwIL6%-z43DHftbE$0g zYeCJowKCe<+h3@E-WMl%Ay>mzbDhy)ExOV^`(z1N^nO$RAJL5Y|3r)mJHQS7%oe@y z7W&+khrn*qb8?sp9Oy5#cGVoCyO&>Z1M9Q%faEjSq>W#0y&|GP+xbRhQ$o6;?DoMz>_P*feBdkK<3et%P4Zpm)e-1 z1dSG)bZ^5L|B#t%T(A=^_~10TH29;j{%CR>S<8l})bZ9eY^(NgzDQ_tH+%jHe6f|W z(>AzABucWNa>m{K4^SLWVMJ~O^=pb4xQ2}n{{cSgl_>$1a!1*L^}|wAOi@whb|lb) zMXXdIbzes!zHZ%dP@po+*H=S2;EYPf49rdjF+YFv`KEf2^G)Wngn`|lGzXrg;zP}* znyfuaxDu*?rnshrL%h>AFu~p}X$=$B+zzA(Q{Hr$-AK4O65HRNExoE??_S2e` zK{;nM5v3UgO1FO_N^_T`Vhvlo`M|hSOiWrn#0UC^j+T zqvgNlkVE>DQV0@6D?JspAnXhG0_Fg<_VdpkOy*qlbf4PlL30}Q8BprM3m zG5l>|i?f@yr8_pOxHPE^tl;@jm=SWhA8j8H+_z9{KhCW&u9lNSYQirO{dh|__P-t9 zbZr5|rby)ti0Qj9uBgl@ZrccomnA`hfbUk^lUcHARmbkX#wtV?mE*M=J}n^XR2HK? zC=aoACf3-IngTnw$ME>qRcecIBa)1YJ8FUpy+H~kkjc+uVGlE*QOJB+Uw7xx=}sY) zj`cs3`wkjt`jJ8=QHxR$kQxe8c)^x+<8bKH9AQ8>aPh^wvB6hU!B*~7Cw#{!A(|G! zDHE$oDey;mQ-=Sl9lZ&Lf>86|GSmvKJ`~@SLa$pNWI^dh(w2k*oae_~$zjogoSwY% zp>GzI62z=fD6?GosYAHWleE~VliraZ-mRU~4dSPuOx{x!k|!5pk6*O-?||D=XNPKz zu~OS79KegXW$?{u_RIG($}3J^mDB`fy~Uc4sIVfnV^?1yQ|UAwoX|*(@V<_xpH2ISgjw#B=+8=$)M&>@1HElfohnLZe7_M^Ex{yzlDMO^` z2@9^iLOZSiQTuM5PL>`hQsw^yBQ5p_yQv#}ey_+6JjIdc7>E+w_4YOd?o-lk_#+n? z6|I2cN3G%dF`hM5G+krP>;q8as%)Dt-(ZdljzLnlE9zQ=$O2U9Ib1P%tVK9Vm?;+b z?lc$&PQ^^YT?qT7uW@eG+aKsB%J#g@C0QYq9ZWBJH+5k};UrgLXYMmQ#!boB0+{Xd z@ZoZsXF%gA4kVf0u#q?s>32@Hq^!t4qLN??>X+NW?Xy+=Oqdc|PONGr$qe9}GCuqq zIJ^RiyNFw!51X$Bt!iFrB6BiSOCbMf0yui#sN6M?HN>47(!dlCEc@6CXBQebc)!RK zP^D?ZY2H$TQi;zP0H{LRnVbKWL`1j3apL1jAG6~UfC&ps3T0_8C&?&G*bVh>Zh6hq zPu{mYcbx_$HbR~VYRyW_Yl=k`XuO{?44EpIWOb*OqK#W!BG%%_6?iuE!}5)wYM!gp z7n82ufZKDR;zg%C50F~ZaSEkcJZB{r~0@aURl{{ z|B4x55>oW%?@WEO`ejBjw_AiCoCkt&p!B3dr9s^Ld=$`^yn)YcF_VXkHk%)NJ>GP6 zf1mcYrc2mIq;03OC_B`HWS?0Kis`&jE`%ElaD(5gsiO{2Ax?~=Y2VjR>rQB~zaG-8 zuKsY?!Q$bFoz4MqZI&{TCIvcd#&xDM!Q<2^)k#_xN$0{NdMRGTeL_4vk-fF59Seaa z(1AYTI-@vtSb@oP=aEshxMl6O+g^{2QKj7P@M=R0%^I!kI-;t$vJh!Q@giq|RMjh2 z+0^9?g5Aq6G#Slr`15Zni9N4oyKJn=pCpoaJ&}lQ*+5xWBc@1{7!eQqvzvjwwV@bX zwww#6e`ww79os?0ycBJiK4%NM_&W0e)a-iz@LN3LwcfV5&iBEsLu0l${tefgRDpiQ zV>^(TCQj>(X+b)DMao+Rce4_dp5yWPdx;4LNU8%hf1#L^VpVErY5@?2@zrHPwl8V zn0+J8w4S5>j|s4oi*PqA@|tMHgP%OSBO&tCk=VVB2h~X_xxkDL*V<-f%C%gYT7<9pFnuzbg*pT`mU)T^jA03%fEe@Nd;Yo$Sp%+UQrQ?A`Jn7Zf=$bo6@wuAxUC zxk?qn*JNY`bxjwv^a{bm%cI?EDl!~u_MO`4O$^+J%U%%PGg6mWk5pJ+g7qasiP~TP z7jwu+s~Q=@(!_Ib(A9E!PL!n`a$>2}NAU|IGMw5$XugOclR45Q;Za~T9tQI$J9lj2 zc#}%Y44h@2fRI21W|>C z@O^ZaoZq$FC+9nzMI@&wV)sk)+E}!xIx3~WS|0Xoy>^WWhTUoA;zkbV|8n`aWI=di zyq?f3Y)p_Rijn%FLD0h8i30XZ)vVWM?pr^t=bS;`z5pfy(<*4FXob;6<`3xmS@x>j zPl@H5M>}X6Boq>ZydSPgGq6s7ulN9QYynNhNV#nACeIX5y#7O46E`H8|HvuR-z@(l zXc`m}@|_h)ETx1oR_9ys0|%Qu)5w0ak|<{sAFD_~f~m5M?;yMQuw5{0kFsaoKw!Bp zk?cG!qiqe5U_5lgeS*a_@<6cdy^T&L2#0Tb5;e$Sg4xM!R9yaUz_X#6HN<8akM)azq_&W;}R7LbGjGA*l%|M$!6nT0_F7ABnP|K^z-=MEzEHYNhA*b z@ErB#H1|@m`-N4^G&WL~N0@YDpp4-)JoZ;88T}1bdjj!(IZ9=)`mZA)g@Ya5`bspWwmE0a(%*kM1MYQW@my_mqh=60Xq z(TqW6-zlpn8!7_6D-@u+sI4#*&Ve!bVZ3^T-3ccImiEEjJBp`+g{Ge@{0q#IJ!@?9m*RPz{hp`mVUuuc zbVF9~QJA<6T?;V?(3tkU%uxA{2^JE~)b^n%4#4jP8wc}!#A=j}|0hE_Pmm3BbxV#AY2;d%W~1w)pP6CPZU z#RDq3?QOJf%m3c9!T}qpF8X#(no3hyvzY;cMEOwEY)}>}c??9@hAa0s;x63^fV03GWId2q1E7tS3zLTyF08!Q zO5gi^_o)~UHTN&oResE{9}i7 zptNcQC-*UF6_WeP15M@_po`6>7{b;pgGlX#f-SxfHV+XVo;m|+^%O%!s#?)512}Er z>tu5DS^g2NKg_Q62`zHZD=y}04p)P{1XiH@BccR&?^T-4r=MS2*?GvY4U;m_il9Z6rRdFK7PU=BY7Z$Ykf&BYrexDT8TU8Q*txF?zVOD3hke*U&N~GEK z5qW1K!nfyCdQp*0(uA2NnJiF}Ivv8yw5Llb$2KPRP-)!kF zbKa?pzA(XHbvol|Gn6GZBKR7-99+Cg+p2+ZJHf-Sp^2nuiZMaZzQ6f2n^27H*0>Tb z<8+jbpp{BYJ(jy5+DUNIKiK;k(u8(2f5W8!uF!7}XQ1pmc(DY0efc259#s0)?C%jD zz}*~(F;W=cH>2Z0F>8-kNvA1((ZdreE)31)HAhYxirZHP)L_H9`wc$u43U_$NH;!I zv>X6IP=*=XN;HO>bb*~iAn74yvNkif8WYz`xGgQ#Yk_wIZ!DSc2s*0mEV&$1K>qeG zgp@x7jDIo-r5=Q7D-Lzb7z77w;<(PDIdLIj9CBWnT~S)PCC8KPw+LN?c~&ZR=tE|w zaic5F94aYZKRQI~iJ(h*=T_h(c-=FWee*GbTD-&SJRhJ1b2gr-5@urLPz$laJ~dEO zmBp8ofHvN5s$4&$*6Wjs)pigr0Uv8u|AX|{f1l*g6bbkIwz>S5(rXdSEf+B&8O!t8da8 ztZ1Ar%`rn??KH9}c24K5kM|PkMJ%&OleO#MRji$OTa_ujmD{(7BtXxI)j}EYsL1_T zV8zQ)E@+ba4oGprpP)bS_c5mMQUavOu{Go@+`+tG@jyD>M0QhwIwP!WY7sPzk!__E z^BK`MByUffrQ&nk^pL8pe=`j(njb)rNqv>`L4YrFBl$@r<%QZ~)>O4lKE&}i0wEAo zCp1WAVsvkE2|{>nWY=88f0GQeSCRa38j}^+gAo32g?OJNf+Ch9Rq^?yH2$0;hr#D} z_quW{7SLxQ1?z4A-3eHQ==fwVs$0iSgu+^M6ZXB@j28@Ms9I0QY|@>oX^t57qNNRk zFz&d4;UkI~?I|>Dusv0w^Ed;cn*k>6NL0x3Z=s<_DPeh+WDDgc3>H3|a2qKPQqHgF zHpYE=?T-;i0v)d@FX9#z{wJ%PcHG*qb=GNiunXD9Iji)l-Q=Y?2lU~%S7K6N3OJPf z6}rw{?xx0nZQ(HHg0=XZA685}B)315KH$AjMagr{SR0ajLM)2}_^pc!^w4VL!BPx3 zZ!kLzN*8QKnijmj7-sEd(AkE%&(63Gd8ksHQ@1$y4k2GVpUbwFU#APsn!`I147*ZV zpW0Bq)#)y(A44pAY)y}0T#y;p1hWO|Y>j2sxcRc#6cGlo@QL&&Gd$~*OXS=E+ z*`?Sr1_P$*cdp+cwNB3bfE! zuQ%JNR^SOrQ>v|z?#=;yP}c~41NG|++KgPjM$PCOo5Qj^3cU#3W~hAcZ({X52&6ri zrmPF06bae?kH9kr%pLm`c&24~977E;?=FPsf|eo1OAiPh%o3h}O6Le3_dU0=027Wn z)%MqBD`Le|JC(FMy*5g7#rJgArVw+RwT`Q~ybJ(*_LX5;gj1^8;DlKr!H9U=P5Lj^ z%?ja#w4VRg{?auH{BMuzwgHP*WeT0z*CqK;8UeH_q%|-Qxw`!)h~)O*NG>} zR9|Q%Ad$Q@6i8hmE|o>wm1?maK;(H;3#fDdMbLU%HqR{LBWAUjv_2P4#*a>Sfq-1t z7oVV~21p#~PKGkWt8}<4b4D0*-*eEFw7xRCsP@?<{b!sTBj0v0?1}yrx-nGjQ;4kxS9v-|jI>lL3(TisREgV^RWi4xbKDv8;`Q zi!^GMr*;!D8g`PHNK~7d0(RJ=AbKk7#0cT-{Q(^>o{%YurgJwj_EiNd)V#>} z>U@!>1>O@Tk$M56#fVMy)sw0xb^k8!lf#A|q}*Yjovd~PXPjip9DtQ0AwlmtTSVAyD`C-Q%R zg#WNG1FtM~8QBL-O{3N}*K~ffZ}OZ|?<$2<`n#TS_qs}L=C(>yvFD1oC|ivneSE6T zu$1y>@9s_}z)NK{+PJ+f5lt&r;Xi}-ZoeiH4QyS~I~#|g0HiLWD_}s1s2iiI)fK$n zTXxS<{0G-a{(gA;9)QaDZyg7i0GK=RtK-@TN}(S7r`@0$tmFK-GijnG(at|qnYf zHL@(|w#4itN>ahWTdEyf3m~?Z#s=VYTj;Va*&o^dj__bhsD`Etm@4cNa^6TM z2$q7pJ6PlV+?!vCabb(LnIWaNH-VB>G64TXjM?5s2$u4kh7BqhZj;Dax6w_H8M-~n z>s;@oLrJcB?jx2YPg${mVhpDDJFJ;b)@R)mjqt9D@;V8`9;h{?<_m|D@25qC#a#m? zn68BdRI`B=UyU>HzP|`p-RplwI<|V^Dd#H$By=ED(3oP;??Y4O(wO>=sv)h#3U$kzMqg75|oxhw$ z+53F)R4R{48EQ~!o?HEYAsT*o%@S}HjG2t@(17Tbbb;Ag%(!>-X(zbYagE*Rp3mE0 z5$c)kI@;%iQq!_pOs%4{h6}W60u)8?=)=v2l|ea*ezW=5>YIv2QEfpYGHqRlO@+Es4`PPYXr!IL*f*q7q^GqOh4#xEXHG& zLm~o@g?^Gqil-I!;G}7x42i|9um-zHT+Fbnbz-4SS8`!0`vCw?|F2c+`hQj}3GcsW zrq$>D(PBK2$LIU}%r2kA*{1u%#ah)b@V2=-GZOP=CdGNIQJNh0+a}hu;WQ&O zqtnP*Bl%-zsb+;1HAB2FCjBAM&$J8F9;u7EhxR_G`=pc^f}RjtFKQ8qkG!Hq3-95l zn!n$*f?H{>5Fq3NJ~n%+6oUc}AP#Bj1-cfG-4vb#(Jjj>3P&^pEh!>o zS;T(5*(d0!A=a8BfCpvT1thw96)ctj6lm7#ir2$?|I1wRYRNRZgp*9=;X>h2@KknQ zylEdqYxwvQ9J8<9^J=I7LeJ%a&U_uv8MlN)BCi2Q+u$uI6wedP5vF*kB^H9yLCw@e zczw17y&Nr)qt{e}9&Lf`LP-HqC^#be{JeV;3Yzmqs(pfY7dVvsAT&k>2%(e~M^#-z zXsC8$X_<%?y(S&4d@!UuI$%Or9S;ETSOx87%=X_Cis$!!!6m8REtNSzD!biU2>rTz z`kU9O@-E9RZJ^=#HR3i~!LO{#RKl_>8=Bf0%~H$vzigE(*FW9SB?fgu9nEGoA-1YfwGn%Em8FOu=X0m^{S@Zu zk69tmF!%#P^VS*q9&_0q@E_-RUEwhy(>nFWD;x!-DILe@k$RiP+0~XAx550UN#GG~4fDC=JYsxD34m3zNz1X~;>3ZqlyWRCuv!!5>j zp=Uy030gg%0sDno*1Myh*ku|Ag3Py$=@k4STSwgg5jD{E1V$4+0}J17xbi7V%v1oj zmn0{`(QthXZ0Fb;7I-JP6jEPKYmMAgw|Qc-Yku=Oo4LQI-5AR%4e&#dmqrvJx%%EG zsv{o-pJum=q50gE~nUj;c8Yhl2o-7>>iE)dc6V>gF2*X^q@czbsm|e$OFcCHn%Ma$NE}Kgi!T(XaebHK| z7-1EstZvzNiHBA~7L)nOF9`c0oAqtGO&iE0*Ye`hO<_T{q~5D&&fI5@+b9S=8jS;W z8O!q?FjnmIUgXQ~{vLT|+TpHffSeV`2F6pgZOCMZli`k7^sq(g`HEGrFL6~c_B=a2OrRw=b?cd-hWA<8Ld8${`Y`32n&3GvYNE86v?Z?0}b|a zyTN)NEr0nUrYmKT&+y_8LS8x}DT{cJf+V-wY)+ic+Ys}3I7@BsOZVWa+mcu75Vp43 zQ20pdni@5 z5>c8%(`(d%ZSbkiIe3Q^;1X;ys94PuwqBK>bsj0l#ar%YpO!#%kzg;;77{eY~~$=2b2?8g)fpnv!U*GPf3Z3}Ve_Z~2Al zzjcqa-$nt1otkyh!sM^*5k|xjV6AI(_s$+d*#k4rf%AnrmYudjFyA}<9HgzDis4UZ7}CDA=qVtykOSZowhF_3 zKL)tlldp@@58%K6>ENS4SW!dI0i75Ja#fj=1K5jQ;vVilR{l^u!Zv(1g7-t6l# zY*b3AZJclEj<;QA?Y z@+cZ8VvdWtXI%35;BpE;8B#iHCAt|$hYuB}WxYkISMVWeof|3H@qgM+&3Ycr56f6W z%j=`GLqA<9A^;}AlltMw3j|43#M{K2A@{v6mb>wmS5gHIW+RuWcR>~i4D@e^)Co`u z2Pg9RR08;@0h7&_?!3UsBP&&9G$)&S|}K{#{rBsUSq|cp^=74yDo|!4!GoAXxccap7@|;e(7)? zp4Bk`j-+@-&zHW@m5rO7v*b|wXvXyj2X;Ed%gN*{ zN@N`Vu=2TIa5E?aW?R?H5t;CL-CHK}2ESVYmI^g!2rehiDs_aiiHFJ50x9lV)oB7qXhjaFP zj(FJ{s(|G3B>GNC1&{5S>U;{sfl%Z94V(?Q>DHCOmFyVl%kFMhTX2PgxaA*@}-MnUt8HmZxPcq0U&Su@O6@I{ZEs{p} zv#5p_qC)Xoqa5m3s*`lUS5x%)z42ioN7enwFl0HHL>k8}@Aur7=e#{%m?eDgJq&J& zG3}pAK@0-A!}_4DWF%Wb_NHuHLMy~m-*eLb$OayGC0*wN%`Li&X>QOBL1mlh)h$SLZjgKy{^1VA8V8pG~s`kCT{Nq6<}whd1vVi3j`+v)$W5JcdX$p z5Ewrvm&nF10 z~cGaDevLEc1t}*6e+g$?91%JQ#9WZdCil{_~Bvc6OJ?Dd4i2(y`i`)ip?1j-*&SB=cc>HEw_W9;uwwiAjBAs=ymxeW5ZSE*p2@L2E0waq`aK>&SM zl)|ky%b6l_v_Tw)5NpG-@hRQS>QO$_rruvtj{97og?*5`b~0gM zlRA+Fvok{zG%_;R$ok`Q>;YOa=Zx5(-seHi6I|dQ>}LLai%nBohUv+#p4DWk5jhzU zR4VWROSW08leXKnk34V)@{W7R9EtbP%JjTZ!8j=!SPTlh>`N?*lwRFd3Q3GD!n#NX zKnI^t6AY|f4U!RCaSotpwu3C=k=QoTXr2jAdU#Hwc3E~i-w)U~V58@jp<<~>THB(} z+Hoj=f4cC8;dJ*pbS8xWwSs)I4iRdF_{bVPXQ9{JYVA>NaY;(Po6i_s;j^B%iAVp1F|u}1x_9* zp-}Ai;>H!)Hjoy|2x7DIQOF>+6q3M2<*8oOZH|?BLrKhp9rXfpj(35t1}hNSB~&#k z<=1#5ABYm+G72R7ZV+Pf0%{>V%|p4EMqGpw71eLZJM!a;PaKUmYGtO4j<5XBW3Qu5&HE|L7B;P z4+KZH(s%*8w2zCC({Pk?#Q@7JM1}Pb1UTfNU1TwQs$dL3jvIRe0)ep? z-KSSBidaI*2mzLz8H#q6KBj4LyS8W1r<~$+x#6v~1qs`?#yw+--^Tq!=$rIj+A-(I zK&&iOS5Qn!*EJt$UEI2oy9F+34mysT5!?XA&NgG~I_m2n#+m-6m4KeI5BD4Vaobzm zv=L7NC=Y8kS_E`u7q-Fvj=zCon?Ag}#xwqS{oGmMG%9Vg*|iDLp5lnHLi}>vn0a!5 zj*Q{%?VzJxMvI^3{gI78gGD~CndA9(6JNAg@;OYO315mp!SGDdRjY7;z}5^=;KDSx z+R6F>TapBy0o1i^Y`A+V9oTNz0h};#0lC?^u|xpnUBC;8{BfEZ@B<^T=aE=zgxO46G{Jk@H zPuz@>Lv9%5(X;-*hhn4Hw~bP%%jz&WL+3l4qTASKr=0rtTOj97g)ah=P|F>^iV9|s z^XAxTecod<)4nm21q8cFIjNnwG*q?*8vtgbzcT%>SV=(R;g#Ul;EXxcL<>SGbNX3! z6WfPG^rrG-sS`}^=X1_(5ld^{ESAe@>iUZra-RUDz7iKAf5ZO$6jR!0XMjx%Q6v^g z5UgNb+H;#M3u^X`cDlHqHSXeLa;nX%G+vrUBf8RiK9Lh~-8~mglj!ePg#p%9xA)u> zi44m%tbV^8&#{R6r~riYp(e+^s+*BU(^k=R!|-R6mt6Fi#QExPXy?R-njA|o#&>e9 zyFkSzpshRj+JjPvC}ZGm0iaE3Nwv%6C!g&npsDb_CNWXFn5xLD)kB0}z%Xp1zP=|~qvUSNNHc zHlzIs&C9J*X(i!ePEw6@(8`C)3r0U28@^=?SvX>0d=x9+-^t=+`E%c=b+e24lI*H! zdCS=+5jkdZz?yY|l6gKnADhKsOFhfo!LCA_;{m9QpT3d+aJz?)x@h(oyIRP*1wQ?^rhoyp-{9N-jTlBgJmCi8}M6?hZDS>e};0{>?CGf`WDVM?RZC5sGrUe|Qm5yzdElc)_y|xA zf0(p`7Z|0ryTy-p-`JgsMkNkf#7Mjes!{52O4XxJZgpi{K?P$V%g=Ykt^1s^@U>TA zaGl`i0g)ySqa&jU1EH1>G;3=dik|VflR3TU0XLeoF(ivs!%-f?w*R@eW4@U$isSj2vXxm<4#tbiqPTyv{zb1pRKdW9!DtWhljs#FZqjzYuMqEb z7%`-=Gx)MBr=H$LRng^v!hBms`?H1cl7y{nur!V@!vkCj0aEcjgo$cw7NIMB_9MU} z{2SLtV?!Qrd&h0ARQ;jL^u4WOzs@1()IQX!Qb~d!TQFcDTNLP`f6e_JeM^-F2q%VM zg-vT`m|&L6whBa`FFm!Mv2c{NG;quK8(eLKoE%q$Br0C;HHIF(Q_>&=yOoTxmW2Ft z>j6_$hIhCMJbFd9sF$5@Ny_`jTC%##&B%S@x|);$fsms1%G#qn1Ol6wtN*7ZYfemv zOeEB*=YeL!;s@fQE%Cokd4VMDG<&6-mHBwxa^1dr!PbknDfNLHu9-R}k&T{H*hn z6}}A+1a*kwazA&LPV&Y~{-LX=YL4N)e02+hh}T_Yz%Ug0OfvlZG23h;Fk0yB6pQ*K zOBQcgUDz$Z!QfJ?-5rmA&f_bEq8R!uRtt>?oJs60031stZ; zsdNC($S5aZ?=^>&Kx7cFZ=B@$Oq;_b(ZS;>+AOm%%!^f5=_vFWu-U^QO6+MnT40E&bF z9Oi(u%_=SlzEIW+3Bh#i!dz zm$jFw>b?PM4E_F7XgBvD(bB7)TUU9YxFa6z2_KDPNlp13uZ>LGmbk{Wk+w%dD=F&T zC*m~dKLxP*-FdlN{{JmP-2NVyHWmr;{?9wZ3YZ6Nfzaj{V#c!Gvy1|s-%|#d?uQzU znQ)Cu+&-)5+KT4+_Ld{s;?I@Uca_JM&u&+Jb;8Us!6637fNDOa3UVMRv{=@oI>`si zjh}z6S5Fs)CdOsFogYU;4bAwTQ6Jq+tG2`Y)Jz0NG~=8u^3r)_kGK{aS@8s(wHn## zDH;3G;1WH3k0S8x2RcgoxSjRzDecGg;Iaad4QxvVwB8BI^9*X%>#S2gZ3u?5k-2-Z zN$&cz@B2CXJ6l15mv6p0TC7!cz87LVkTKlI3o{T9i|i5WR#QPB!zc3xWyqhl6$ zP8w2Bj#8eRPdkKq?&66I@q#B-l7K}BQw4Y`Tc*cb;(y<%rB;c@~VVfY|DG8a}IV9zXr z8gP_>Cv@@e_$dVWX1+S4aQ`8FofrFmeNrodS1VC<#{8A>U|5?eu-Buv{V?3LknHk0 zK}&LBE$%ig7#A-qLaXG-*Ef6rE9gOmJJQ zB}3;CyvH#3WzE4FmQ;lwU%lBfMMKX!cOE>A|ByrWZg2sK$OT-FBOfq#40+OoNxnj0m{eKO~klIK1$jiZmgr15o%O$)WGx{fzYK8A5S;M$SIs;b*govf+S)ItZ6DtX ze-1+Y>dj)`56p|Imm7~FMibh-!B)?w&-;&mU-7cP>-L|FwGa((07F$?1 zIV*K9T&6VJ+_l=TziM|mygsm+YV=iBK9a~=woBX>kV|K?RlF*ks3caj|4Z~teJ=?4 zhbsEgy#B$(KwTw4Z$%vx8erQaXz4rZ1WJ>5%zpa zY^y}c#kdrsaXeJ!%YoQ;ZpjA%nqC1o%HL$K>sE=@2RDS12EPiJy?>D6abT;`aEUPt zGK89@8sJ>aH2JHNk^uk0Lk?&aUjdPbz<=!XBHkWSE_bNaSK96dan%5g(A>m!rM-2+ zpC@MM9dK<%w`f3Oq8ukJ0G8qYYgMWJ(lJ05|2HH?W7W>vR!$H85HhSeqP(wy^WX8${`VSz;pet2;e_tZi zGmITN)5s)hFYo!XOvh~LM`i>9&TZ*s*}hY2U}%NTuu+x#KOsBQZs02MVL(Vk459C@ zJ70j$=ujBam$ftGeeBaU+-?~NmIe>HvjwRNG|bP-e`X;q1SRAHrB?*Mm3>B;{=#y4 zl+ED8T#%a_wKaQ3AQtEn^;Zws)V-$`D)o6V;}Tr%P{q|byDf#%zkp*qzpiZ>?i;~8 zz$r966HWy;bX>2*&L84gtQqYv7#`I~kJ5`$;H%T5`N+Gtg`x1JHX5nQgN#%&5Btq2 z(-})Z5U-$WX4?0*R?(OQvwQu{ccUXzdkrY6k+A)fZ-9kB20;7dS(9?@npCh*+JITya`fMcM>rz)+cponF|%5;d)eHZPBnKJB%jkBnrVL+^bhS zFVZa)M`aKC4fb#I{@eCDwYf7Zo6_5|aOIvKrXkIr+p!22qc1QRwC{NHkH;W&Ss+wa z>n&h6v>uXye_?g&2^!Z2LlzE26!qHF>4^DZQJv{*1fd;3*EnU*_+2(=wv#kvLhcDk zEumF;1iVI6j(;K)AP=zgOwNdawbmVOd4%Xh2`gn_%!d46Vab3eO(U9DDX-2C+Z-eg?$4o~r8fAB+)P4laeqsLR7T+;t!V+&P}%r>9r z*`N-&;>u@aZPFC1_||8};-k_TIYz&?aa~t`e656R5-0Rk5%sY@%82z#2U3`x+&g4UXSrE=_81Di@A)L1Lr7z4_gO-x>^vJg zC64sWS2_btwdoIjiBz5%uZLkqiSx!q-UF;Kc|0u2S3Alz%r4Ck;(C2 z;oZ2Dp}}Se<{eG1KYjC@3QuU^0Nq4H(c;kA>H-?t1rNsnuQ+dLHcogXoyc0jcOzvW zu5$y2^&v#Djx^9M*EY`WR{ar@7lwo%4};dV7V_Y8*T|mfB%^SJjzL;!_GFkXA+y2B zdxWQpuEN=NKLI*Z4&`h8x&K?gXV>DQcbq-5i~(|N>l&)@SD~PRQa(pEH-s^u`So$q zi+$Q5)h^}Q=XjmO+)Ti~aI81y5RagsbOzBaicP2Y8;vVATMGsK!w|3)BxGPQsm4qG z0*@&^dkgu`x*?6#|PT*>7WFt<2Y$5U@bxYI^k$;!{p~m#$^owOFMtzC9T379=&7eRU}f+wmn4O29Z%m@iHB zD5mgiq9#KG=)o;DUr$ol0XpBT42!cc;PMtw#7vS_hSMlE(X^^_kV7m!I{-ALlU3}} z`VzpGDnsWxWqPnroo9^S61EG>mndQs!t73@Ip1~Yv9J#)Skw#iZmg0XOJnu`dn&LQ zjCds_q|L_#=H%(r%tL|%v9ougvMw8TY);G-myuf0r%h99!sceeoD;<#5o~uM!&-Gg zxb>bBzy~GwoqvCmFiv$GeloQh?(iZ(+a>oEX)8e7uQ{ zS;H&c3T_+Axu|$|t^2m)@t?0O0V{$_DehZfc+wg+Q*=m@N~=n+G?r(PzON$=0aN+G?!@9v8Fq_QwwTD& zhrl0J!SJpFn{7qEPk!HHZeLfh72>frI-=O#ODe`yZAiN+!23;|-rZ zoq0;D^}*SwMNJ1iQ(WBGDo=Gx8YMKKEk114r~rBFzq1!{+_ z3Dr2FT_VoXFSlozNXP9wiU{kSE1E`H)?O&~c&Da1hy!@Nb zGxa32?et7zIuDu6)B)wi#ubF^!ggy{M?&^z0z~CFO_!^e)~hk%ktR3)CqD|5zF3yN3wpq|*-q8DB zka_bZj2!sPzSkqSbv}+)0*yVFbGM}iqDDk>wxUv6Qz-M$6%XSe$`PR1W)CnuUF+kv z>Zp5;K0^BG2PNRw28xTlt)OaqAH?~}AKRc19MXW3@tuQxr=g*`EDN_vTDjdYjQ--< zSt1@y#*-SP_0I#gcKx|afLn&=v6nsZJ7y zlA(CvQ^k-D&hDGxpg<0YD?+kP0S`<+g%PV{H zE#3~sK8NZ}y9HzPfra=k5pJz73EB5&g9!c0X`Z(HV+>k*l*K{^@YHFb$7M!N<=dJ# zP-}gx{Am<(d*6>^A)OJ$bbPoRA*Ce(JLA3(b;cJhS=sw9kHyj>qqg3QwIIH=k5kYk zcrf#E9xs>nH@4x(iSYL|_@hM3(w#pB^+KRJZm0dFOM9y4-w48jhh}W4Fw9;!X!72CWQ!2f5opHGI*0h4JO{x|8Ve?Ko9#LqD(b3nqueaR0ggAOp_u2 z-?S0~#QM_FFgF6D)nnw+d1_WJ>&4I7QE-fl$7I!3w2h|h5NHMkwy|!BV=MB#<5vsx zA;%$#5Rk1Ri)5IcF5jL2_X8jRpZW+Wga>Jau0xKTCLwmWpPxMIY_4=vEjB+sO)FvF zIt1%A;0@?P`|&jFYTESz&uE_P3yM*t0i8ideZ`Kifu$^K4iJ}V(Ahv^e!N=pf>9;4ZlQAD+40W>)+imDQ8$R%uo>-3=VVQQE3uY6ZMdzZhDHR>kI zqQV9Wn87jfO1s(8$#9EkzNDlC13T+)QmbATaP?2vZLB@HS|?dk}9{U@X*=-`O=WE!j4 z*!UKeYi$#%7)@Rfu}||M9+k}m2@fe`%uw74sxEs*OQwXeMue16>wPWDDN|iI(w(M z;SNA676s7(2`}mcOm3%N0KY!#u7em(h`Mwh9@u?A@jY^I=@?XNo>cqwIQ zqNVn-dpV&~nY}?@p;-oI?+7SC{F2XSL)Z}y!NV3i%*O^5E%yd~$rq-S@JzAm%ZsaqCVCl}A~? zLJgy$SA0KHXf-pCDIKlo0HS<}S%=-SgkjUnkz_RrCJdkvj$Fz1h5X9HnP=goUKsTh z`FpVfK__R5L&v7WL|v$wS$&IwnG#jUpF{)8((nhm@)-7y_Sy6nJ^i4x26mu|3eWAJ&5uB2Mq}S>F9QdK`tCAO{{LVJ_q* zm&d!0cJ0H1URL3RYf>?{ElJyV@DO!%)GfQsNPCj2XYB3c!Irq!B#Pn-DGLa0I4z;#u@=b}Fg7nCUBmJ3_!W(ASC-KJN#iC5D^(vE zFmqQ7G=?}s*9MU}f&3UYl}$~-Qu#pFz6p2F6ya!TAO^AKh%qRJflwx3>q(ynJ|2s)cJ8IcSz^C?6mQaL~gqv0Yi5 z*U}U;8}K^8(+45iDE#*?*(Q~=DCrtGo7N4p;r8mya|e%JDDZ`&n-O_&mOsi zo9p)fz-kdILCGlR)}^rs4|2=ki((y|Ypj$3-@d^+#n%`lGs-%7PYk^{PcotQrPra5 zdXLhg=6}E_i?A8op_&=@tiVdaygPZ8j6^j(&dipu%6{gKlaDY=)vP>7ILT#@nkA7s zIn?H+C><^2l#lt)pA}WAdhRV|8uY%Zy7A=b{rKgu`6)8Ab;Pi4=ks9r775^BA>RMhFK7gN(Do(lm zTC*L=>dkkIv*90-N@xVQW?h(ejeriPVIonzYS+H+%9pUX!FeY#N0V7FoUH{3x4u6S zAlWTSHGOGsMd`Hh>J@aT;eGqA|+c969>(UslY5CQkflfat`@oGz;NDA%qT z%Z0R%%TvdZ$d9h>qk`gPmG#wdRFXgF2s7Ap#$HL(fKbaVIJ3cIerlcbGsCm?_g>?- zFOc$=kk(07gThRbjyXciQRMU&EL`gnV7zpY5ZrV z{|rR5C6U9VG}eR8RNhh3$H9gPEx52`!)3GJseJH9?g>#}k^H*KsyxOw#xNHCM(~p+ zfKkY$UuAbiCD{a=!9TK-#|m_Djp=!Bz;>FG`O&$!C@X&BqR|I(&2PI( z!S1tS&kX_N$}xYsn_^;Qd1~w%f<>e*|`^yyKRvlpo_7jn)3S0`)>>>Do;0aW@=DB_PnUE zN;_~paB$XXb{=W3u-Yo|#QLa`HU6jM6&L<${*GJy-c8@?a z;C4VAf$H_^9F(xQ>r^Q)WR8{<;e#PK>V?-9y57fg7;)*_6;XEJF(=p@nYX%f_Mms1 zU-St22HL&zs;d6!>02e_i*Z3678B6NzmT9cR@!F;u&Qt(juG{IKo?E_=PDZsi}Z&P zkz+%6OT6JIyR<7;f4?v93^xC%wpHmr2#$vH z`n@bjH3C9UY0cVj+f@_qv0pz_{21K~sZk&+Y%lj+%WxBGT)8kP1aV^h(s&QC(UKpmC!&{z%_`j%4ttBbZh&Heh>dlg;KUBPm&YAMoVkO7I;M(pIb=(y~C`ANv;t( z4Mx<)cDm+e+*Ll9EL0uejplZr?z)my88s}Z7t*tt{i-Xmm4{{E;%ao@#Mx~0=h}HsCz>mhZPApMvvv`l`7vO)+>+w(@nb+D2 zpuBQElKDt~ThvLOYAHRW$uP&|CUgG#gkFJMaU{m{n408&gjjrVlO-ghuk)lB@{bU$ zcUAc4Vh@(c5eyICfFR;f=Wc*A_T$eztd)T$vobp>`AgL|bNQZz2nsW)WwZ7h+GD|%UtI`8L?7xoF#hiYR)6t5Ae}(D)>JtKC709Fe zO)8-HnJwzp27@>VjM+vY-osL)Egt_3*I?cT+YRkwN>1u00x-JuE2y-n2YDrm(Nf}o z?n3=4VKE(X;n6LYzyto%i58WXX~$BE<6B$=j`iZ#o^Wfqulgh@Nh-B|7%!neHssem zYXuIc)adO88`DUl7F*)K4$PzaP^Rz`7XT9$Fy7cynUJ)ZciONqdgN_F;~fP{ddkz? zbFzW$0Pj8L?H^qpy1Rh0ax1`OOwj*nC~@vh-dVrjMP|C1is4QxMf7atGKVlr!iiT6 z=i8}ZT2#OM5ktVlFCYjyN}%p)w*c(46DHk$UXzsc!K`9XBl@-=Nv^^f09f^2)Fb=h zhO}>}S&8kijq}}}(*LI3hyL#OCF6!Rt<%u!Vu9Z6{$7UYHL%~#j)!mwiO*Z_ULX|u zYQ6v&@KBPH9ydu^EnV8g3bzY%7c$pLLpcS2?hXQ|;{=#emu~w$idqlG{jzSONi+VJ zkxjH`tE!x&?s#}g?N>K|i4uf?S_}xRq-RnICrq};a=o_^*PLJE$(R$V>%`(%!WXao z_8wPI=_P)3?YJ-YSJ_X8B3DX=9Cihru>xtK6tg2O$QEpw#)-JbRB7;;vWTFqstrt> zP?(9$Q_C*F!wMn%;rk0 z4U-+%;1JDqaX(=2t*y{gp7#9%Yd3baKfP|i!+}5PIjUxggUduf)CAj044P5b~=Ce6gYgK9pIS4%jLpddY`g<##slAH=ubHz* zJy^<=+|Lit-^UcA!ss3)#14FHHElvFVdqh_jg-Dlc%(OjGjvoC=j1)E4$E(dq8c%b z$w~47v4Ct*%s!M>mzyc-a9^_)F7T;O`&)qflX(*=%VR^1VE`NTX7vF%(DO-3gQo>s z8g}6tW8Oa6WMrSZ*lZn8@FrHW8-2{ENi8?hXZ_t4@@%kE6fHdu%MN}801Ff=d*iZ20~RI zh;O&ZB-uXGzw=&?fDk(&Kp1_@qZo}^s-tDB5t{*w>a-OJQT>N(0VV>>ll_fKm>&&R z)1MZo4QODiL#dkfCFXP*u-aUs++zsY1FU&6x3obo|IVsx=~HM=ixtNI$2TwV*1N{m zIbIE?ewvYzYEQF*kzW}Aoh^Up5NwCgILIsl71+hOln?`JDP?C+1L`taMR#3A)zHdvq*yh7)6H@X{N6|cM)-p&63Um7^eli(lcp8W)Zq$MW`u2 zpG0crK3;~=Lq)bNe-73a#ey8HO_37P6n!dODUFp4WASkWPQxdwWFH+_h7JaHzwH=L z8-_Bq7r$l=YaRUU;K3FZLV#<9O~g%*Zxdt>RFjpJPNvX*I&lkJe30+Ey~M#o5m4 zKr5zM;Eo#jlx=UkwiF(v?v8q{vI{np?+F3~cEnau|In5}>1BwAij*puTb zW1(YSz-4lZ=_GF>0{&eVLhjT*U9PKA7rUA@V&Tvsc?dhlG}4%`J{WMuL8fqku_-sv9~d3(HVeCv9ySu`m z-8vAxbIj@RrT3+A(=_5LYTd|rTmQ%*Xv~u>HZ@(4 zih(=ZU9YS`5Qlq}Vf$|)OgQ^@<5e#by#8G`zZcLkV4nPM$^#SQ12!oAPm(=CzRMB* zUz5S}%}hzs0FO7={*|(wu;iySp6mwL#qL)vj>ek{W4ZGt(i=|u^QML81XtV>@y#GX zcwLqNmj))FCPdF%qoxbvGl2DS?V!uQ>1EcgHNX`66KXHLVW!OAaoJm`?jy}1}2w#3=|LBc6XuUvI!k+N8`UEFEH{(tm22d8o?FtJ}x)&ATcdrsVMT9j9 z`BW}bm~=!O9rNUZD8k4v7IN$kBU+0Q4=;G z<bd?K=rf_@OH22a=b z;bFtISXmsORAK-WFd>$V|IN$Y2qLHAt0LW|EmP-sl0XDDf*bif*<#xFX`Y>9 zu4mqIbtCFus5k!D1l@lgvW!I5AxJe~ir@$LPT#uHFLgxvX!~Q(&h|;ACyrSFo>j4@ z5T(BsA)GdLZNSNN57yLuzn?0SHTU0{*|2P&wqCuiymjd|t@g5du+Dv^3Eb7ZFi&~3 z!8zAm>Osi*>l-R&S-yer&^%;HfUchkRNW;_JHuS6pev1AC+u)A&1$qQba z7M6DrE-4sR<+j8p>cK|udcNsA;5Q&)JtTgN5Tp@nohgT;DnTt!H$kei$6c0jds5^E zo|%d@lFdq*6syr_Eewkjf{**|Q8GDZ6VoVy8)wiwLq8TGU^wM9`ul8PgSuGebqO5j zR}e2U#UoaC4woNEnmtT_#}k*2LqkFMdK&hOoW_thb2T)o7QnDR9$01gpibs_=wPLKNi1Z}lFNZSeboOahN={Y@ykhCQ%t${;| zksjcMpOqm7fWv_qT`@fStN+s$^!qV#c>KToTHXKS*9=krGqc}VhA&37xg=iS3#zk~ z#dYNysW!PhI`50WnL*T~lJAXYb9p6e+Lp$1IVGN7axy!6y#K$k3}pzC_$D{t!;}hL zG^H7(^)S~&Vf)LazsU#O?8UJ@iT&D>rc*{0?l*8O1SUrrBKP|pHNvNh5&-r1eqLnX zCYbUNRyqOEi_Tkx^*w{O1Dme2209mxf zhln58{M9DMLvIE=Nj-yh_r~N;;?OVt(6767PNp_m?j!8OlqwV0Gg?!utQ{I>+G3 z+HPy_*ha^;ZM)-+I<{@wwvCQ$+eyc^Z9Dn$oae1`>Z>|u|5`uyuCeBtd(Cm(W9I$B zqJ!9e5!BVo*7g}ha!VLUGU;}Za3IDi1+pU}`eP9zV5XWZWQT<&10bBY2 zhZqxA&IE;(TnNY{a3@&Hq(t%A%;`o%{!6WsVEecwY_$WSLoEY`^x<0rF6GP%JT5el zk*v!{IYUb|+^)Vj@~v6#EsRTu-+!u#G(>Ej9j&z6u_%d3ZmzHpFX43hbgAO8{h5A? z_dA_UWK^ec2}*H)%A!lN2)!)f_5a!!B!5D;_!r-Q@j+{%)9Vs4^bds=Y6t{?A=xGI zs(DNrM~Q&<+10#S{0be0|BrRSvj`1@xO!}F5;i`#7y5GySl*U zKxH2DZkNupzQ!V^C*R8$>ID5Ocf{pXeL|(9)PIr!I?Q^2w~>#to+>Z(fe68lZsA%; ziIIqoJ9X7#!>uE!XhKa7!5*Pm*NmxEXqzQ5%;{*pe^-EyoPSOL#m0|AUOL9#%DQdR zr6-YM9w2hFVo&F`w{9IObMQ0ZQR9CO&K#`Sjh6<-HNgL;s@$6XsVXIg@4o-=-~8HJ zRUTFF%iROp24B&M;_7M1n&ZoZsj@|1Ghm%vE{jh}W(h{Z zzW>)8nB)2gRaYic3t0d48GpUhCl=^$C zH$+&LpI_L^tS|sbz{etFMtz_A`dhzTvqMqnRf&jQHcUK<_t&`6o?AGOQZCkGKspsvg`UKkS!2}+u& zVu;>gqNGtWnzSG(*Io=jgjxv_WP#-K|53|p;2c>36e{W;|Fkf-j$8W+0{82g))<^T zT0mG|FNvGzrwZ8`@p-8v4~`fCOkut5KwkrgdJk{GtGmfWyU&vZdBZj*MdU$~2(>iL zBsrs!a#cf?j0U5O3@Iz>^yF_CnTmh@m1$5EDERsTpuaDXT?I3g|HH3M$#YtV0MIu- zcY>rv+y8juVYtrXp_fg3f!I-*9w#osf+Z|!F3mb^Cm$EEXjL}-Qjh;3g+(NEGuesI zhvYB=A9DUB$hzh*)mE%Xz7Iep*>Haoj6tjQo_~4o*xfN;iOclDm)h9B5Ft(gBaw#F zkCES}$!i{Y2l*7{(51LO8Isk-hmE1?7`Xh+jmTIY))NOE;!T}~&SzETju4h;VF)qg zDr6fww|GCsAK*;>3-Qn(A<)^+PH3!s;0?~A+y;-Z*vlnDqzMSCYRbw=(tJtgCdol> z&;8R4yj1yVKP|)|5M|Yt{`Q1jdhX9O^sZCI`g({+PG`WPX|`N6i?+4dRQeG6@M7(? z7+1`BUYk4Uazs{ILrM-ev~Y%xII2CdoOH1*(h2Q~Z3ELJ_45#)BlR-DWsL%CO&D|u$-oRo-npF#x z63Lo08@fs~75>kft_e9keZqm_h()m%O_XsUhh92NO-6g;MI~nf-vxfRduA9~RU9#s$o12R%oUr9qenxI# zxw)&KUfLAU{VPHzu45^}QjXz$1hrM2C1K>$5mv7>U0V#QUft>VMxzIbXa@ahxAHv> z5asuBCAMy%g3M1vZ;3x+ty>^LZ-#9P-rj&88#+d&6tIB0bJnMT-d^#s|CAsdM& zu-u?s+ufVtg0BeW@V+}wiUP0~(yCB1!8p2+v~X7>OE`ZuEdH7wh}LS~K-`?9owL%g zUei7eg8^hVK`Sg^2Sht*r`mb-$T^3P%RN3LCS+fNxC)g}2W>D({1}te-Acl{#M9y? zyCU!#wVIH>C%I1M7}{R&=XyOSM}{LW0{S4wQXAIGy5UnmzS%FQcj(LrlVWZfzyo%> zTHCK#8 zs%&e?1@rEahMc0AeK^D6%|FgDL&h_WIU_25-)QLH9`9*w5#n$dJS-5D>d=?@t0rsx zsvQu{wR7ET1jb77>d^+*>B$RtU)$Oa(hCI1;Eq6}$q&N9eKFah8Z$mwERIJN@MDQ| z50KfO0}~NVt{AW+=#Okl!{tP~4k)%OCWN=2o=~xeCcs0ynrxKMp6qkaETK@H^n@b9 z#(5>BGMx#DD|XF--U01##jV*1gQY!VEHB;Oo!1hK4xkz3Q@sMK!jW&E2nU0Sq`8 zW=N*F87`@k^Cm;Bv@UM~Xu3O(`IOFj^d8ckKL4n;Hg9f)^*AcX;g9e&7t*CigM7^# z|NbNirRDqF}Y95lu4MfeXfwRc)nhb765OtB5Y!f*s(RyZ{(}zc_I&gU*bxC&Ytcd~3OpvwD9N1AF%Mz~L!y zIcr+a4Id|hbyG3uK0!~}^Q_umkKZ&#nQ6_*j>t!&a3IC|(`GlScHyhZL<57SX0+!* z`0FYD=MkSP3u~HT2@;d~sT&vDb27H9nYzG)Od?dI{t~9MjmAcCC(~X3Qh4gQ60o3Iy#V7=in2+5rns*o~;11+TWMHjd z$PC0oeZQZ0tQ1IAu_raYD6wU`KAq+B`F~iwLOB;Raym`b34a3!1qnL_J8ly9q%*Wf zC`p*s&!Tq2jYl8>bF=)UGsg$xH1Hu3<(|edOAyo|@@K#5;<3qW?t^48wgk(YIXvDS zHd?)aXha}%s1Rleauke{37&2N64RvDXcA4fJE!_GF@H0L?YDR-=I7P?ki&kyRYBtN zTWbFv8Sy|qn#p5pk5O?fr}l$A*h z7{K&Fz~BfU{t|>C0_>j0b*(DL+D=YEa4k+NK84L_j-&*sm^` z|LX-TlbVC5tSpmJ3{t_y{YveypM)tTd#gD3h7v!WYLJI621vKCSp(>2V*Li}pd^7wPYfFcn)=!H`^m8yJ7dV#`Z3MrC`CE<#Twl;T20pnn5YSh z?b7->If~}|E|&kLWxvV6@Yn?3-LNPwq$PnQguO-Gaf$JevM9b-fOz*6Ky4qsVfz(N z6cNKB=SLAK@?P+^*5M6M)R%|k@Y3r{Noz`ue`Ph_!bis)Gu>h@i4elhjJh5Qg~(Dc z5KrAti561G&24*2M;r(wPmRWF>aU6Sryo!saMW{#h9Y#0p?@dB?8OR`)T7;!I;+fh zx($c4lYI)d^J@tQ&f!LkYZ0^7r?zgPRjJ@_y2SSpF+kM`XES2eRYTWjWn*Z@v7-?# z=9i&G#pD_po&1s|c!|D5SG>g9*bhP6Mf*UA=8|h0+esOq{`N&vcX4$qZsSm>lfZCa zMM5;M&q16ZN`-DWjH&Kz(28y%7J(bsj*45c81abaARUHv3imq)Cg_sh(SrDHod@v_ zgnJ85_cZO^3|2p0zR*e#;&QZ3q4 zkE4ir6us>MqScL9y<8uhd!rt7Z6cE!hL%k;UrbAgh9D(GG+$xeGMIsUEG#zBw-g2ZUa% zvI(D@wNp|O1!plJH(OfeE=R@v2>&ciN4i;;m^t<*6<8FH$GLxeV6+d4_B2HBslpVK z*=jh=Uw(gfwCp4EJ)}O`75HH>h3&M7_X<6oN-cSZ5B|CRL5v9Jm57E#Zy)9#F~3LF zLg*~dYOxM^&kfk0JfHj)Hp}V{(LlSoF)$UtZDV2swRX5;--kH2{P{6r?F;z4I2Igt6}GqNP3EFheQmh) z7J2z$108qR3)Vt9l@N*={VW&bKM{!-oTeKz>lijbN}0q~AL#qKq^30svVDV-hYuaM z-BjJ0=3Bx}?x@gcsTX=2U~IP0{Layly<|KKkRlP{xj`^kBrrTy+v}Hp_-5T@3cc(^ zkC^T>pp#l>+=mDx6BMcsnxGbUB;>w}~W>Y`aI{cI|e!8{5DV#{$NWMVsj z9wU5-j?$~mVARd;=<-xYM2yK~6|6mN$5ru!WUBKK(UhSe{Yj+EEZ<aB)9=3A&YJ zYO_BkT!^qgRmXc%XRelsyqJM$!+A>#qG@)M*nj}@5@O=J>p}>-yFl}WQt|}RKdI9n zrnNN$_PrNDMk|%A&@qeR*D%Kzi~RCafCXU$61`0qwTnm{$JI*hp9P0PU{M@gU;!f= zSpuT@KD$1ft^@n)K85-1H($3%=^-Y>tCfYn`W}O4$rAKrpZR60IPKox)nmnE5EnKH zgpa>#ly%}*k4Zr(tt#}8GC@~o0tp1cOLb3H{`_X*qWbJ^!n{P-A#2pl|IW04QzHpH zSKd%_5O#(HA4n!Z5fRtK`Lu9VP2oOBY2k;Yj0eB89%)S7n9H?sMe}iS?ZxN5*dx^q z<@U)xykaymyWtfg1JcA+33qTn6z@&?1OX%jI;A^S&c>Ha-)5Wi9y#~#rRfB#&%=Z#$&s2H=8s&R-%i@1CDC7XsnAkHXBBQyifc=rkRItK zHZxvAU5>-Z>7ONmU$w1aJ4^D=*A*kngf>uZ=~;o7F43p!H_#ejKgjzR*c z@7~YqpV-6iBVT(@rCF?H8^dC7>N)JsT4#Os63Ahz& z;OB7VON|)1oL)M~AT=5+f>kPVSW3Q8^ja^xg{YX5w@Kr53w(6rSd@x9sM9G;)AH zAFE#n6|Cn9+FxsUJgD7)#?>TAf7$O-d)?J{e{cSrP8Bh_Pxk?#ED^2=lENYh1Cjy# zk{_V&Xs3g7(Qz@VK}U8b*tE>XB067Ak=wQ{;-hvq>%T{zcAC#u`M(&R&@a6cx zxI7^}rg;~!-@+D9xO*FH$@bpGZgW>V0+izGE6?Wx6;F0A+Oxmvh^d=r>!kcGlTq>M zM`t@&IUzZh*SW3dst?p0GmruV$G-E(4h>R6&jS}CU2@FKybLC5Ha==)y_SU zxeS1%`b-SGXUr^wOTmxtmN(i|SzRS0it%x5pvB=_ph@W=pReS8t zkCqi1k6vQSpj<2)b~|5c*+y1MGC-i(e)(@HNf6h|=;P)A#omIQS^2%B0I0-Z;o%^;g^C?*SZgo}76(7?sczz-5sO(26$P7-)S2_n@M z^+etor1A{81YPFtahsq5R9*T<>7i{hKs~s}Wch(f&fZvvSEFK}qj)jhJmjjn#Yi6W zff0@38C1F45>nfbMsK|ZO?}8WQt#wv+&M9l^%(RaPb^rTOq?LEt3h=B1lEU0I7ZQ{ z^opQo#TR|CTj+XBW&0E8w%p$3UL$!=9XqaA_WDOfiL``wI-JBCA~vp_a#2!G%oflY zn*y(tbGIFs!_;*&u%#6=)1j>#yaT;TF}%AF*aVTz7%5pB5l9v#Ck{1?K8JUOI)D(* z?k^TRG>Y#@2kOX!Un_@(!A9KE>O9*%!S}+q?E7$UP2*@8KP0~Ha{WbL%uWPaRY#Hv zZp5qD^W|KD-p0wc1npB^m2OLC+Zr!=ge-pwpIYe^|a0|0(~@i6~qwI^h|^+YEXpW^+HwVQFo+0Om7HU zE-dYSwL&aG-|^hRa{NaTsesivUZLx!0p{cRYb}V)fp^k6R=&Q7Gb;(8l4Glhc}ub^ z?_PaZP1Hew4hc5#eqe@fT6BIv?XIaZ3X2$COP+pEx~J05QPt`3FXw(IQ|TwK(mb7L z;ayL7eoJdLjmzM1H- z`YEJJt$@staUELn>6P@SNQGRF{0hk#(@Q=0|Uu6U4(DAG7vb0W7qadUZv3W-t{zfk0j5dyqhPM=~z1MnTl z+RXC0ol@>7B=ljkyyuLL)l5fEct4uy9QMg)eSe|TGY;;MSySr&Ts!wT*?Xa^RH z=$npI%>$5dgOCdFJwJPv3;Z>-nO6C9jB_)c4m@?n8Dx|sS6`m!UFg4tRa6I90IJ9EK$uQcYr@(lyt-Lf;x}aG z-@b12!`NmAy&0(1h%mso5GbDa-uCtc7q!^u*Rdh{MxOM>JrM1lvaSolt^7$%?=a-7 zM8_cK$^Ht-LW&N;m&YpDAIx)IKhcayG8H|8ddH+m^$XWIxgqCnu1R)N;}FqEsWxWU z*;5C1==?G{aJ4BC2kSjqY{lm7eXY{ccN>lreEA65Xcj-q;z^SH+zcwY?61<#>@JxlsYdl>AP5Z;)rjp{8ib1{1fRyW@*0 z;=7umHJwGd0niSv@&&?p{{d^zfpX&i0c-A(N;v#VwnZ5qZx*|EV}1K4!mJ`rd5ehy z+OVG5fm}lKl5pNb~UG_z|{Q}%d5`0J7kJ*Q<6m<0&HN($+`=0Czl~j z=s}{UoesE~VbM!ClOeQ%&B*KIFfU%oG!ElFE{z)8@9_Oi$4^#F9uKDsZWtkE)*`*# zMg<(3qQ1}ej(-F#>Tb68Ig!M1_fFRlz5K8leJKSa`;8)`=9OTg&|)0(I~4D%dq;Vc zsS~Unhnl-vwr&0f8lFwxEU3hzs`@EC_9KA(7L)+tBWfzI^mjG-?pAETT}_&y1a;nB zQM>#a_wnr8WwX5^8c|lq-70SNq?{Z})HJ#?XHX0ii93vUcMdl(6GJFQc(^$?7$;QY z;oAr0iciOe3x^GG)Jv+8{m4E6Je6|y=jr@xHe-Y#j zI|aFI>&oP30LV*&z}(4EFWjvp`m!wVe$bPR)zRk{E?n>T`7CWCZuGo}H49AVZqgd+ z=nw+$oD~-%@*zCj+P_UW%s(kHVVV^@8r*+(gRxGBam6foWZ}Z?phi%I#QvEhD>hSu zHcNc@O*c)D>-AGn<@yk%xz<3f6=z?-CFsR12slEHEOT}P@((SyQE5+=(so%A<47Dh zEa8_~I1Td>8Ykwt)PgqI#+y6uv%dZx2a_nwr)g;=qnWB*1vG=-cocv6N-7d`gl5N0 z71#}MsG$RVOg7VQo<+QJ3oEX`Du*4XbA>JTSQ)?9B!MVkrivS1J`exdGpYQWp*|!~ zw+Al}P=#s40FAliN1aW-05$hxWzt6iH?fW5=7kggWcHSsOQtbtN?UDc+%o za}~zdzeb~dQG^`DirKgu4HlU0kgsPFit`O;yafCl-?7?BspV%ZCv62=?bINk+F3D8 z;(VI~y5S%aYnlA%n5V{&i}VK?<&=U*hg*l63tqXqE~aUEjI;6H@ZNo2O@(z6bEfG9 zUCJrkARK=>Z#Z=Yc+y1D^OWPcn7SvGp!Y>TObGb)KiyG;^Se8476^s?ho$iY%1QiY zX_h{i($;d}7i#GGetjjHT+fJU2c3u2$#*Zf7m?jbg_AU>Xz^ znU627qvmwM3&1QFw1{u!c*$k+Mp4h3%gzq*>TjH;!Ekeamv}sO>q_9Pt_$ITJW{GN zoz)eG?LqnN3WygsX4_J+btk$-`Ap@HHRO}jnDy=FMyGP~CQsb0r&7B}++vfl7Lpxc zG}TS<`4Zh`o8III_{^P2>@u%`vRJ(Qwc^${p_vgII(Ff%{594#k707H6Cv5NxMb-* zp513IO=_g;>M&l6e%|`yN0mn1#$xkT^!WzEDl{x-}Ak*l--Z1kmNi7}9oX zy3w4fP3xnm6R9AJOgwUGQ?*;QJLw8uKgOZNwadO(u0Io4bN;x-m~FV+?b-Jnf_`Jq z964N-Sv<5x$kYewdhCfjj6?WA%sJE4tlY!J_cI!wPpEj+VJMJ5bdv!HjVqGve#LD_ zNRfREg7){pE!tSKN+q-4!ehm(5+|bCZp9UMTsJ*_cX-?sO5{h#m`xz~TtbsKo76?m zN?#22s<+3jr`5Pkp&BeYb%U}h5w!^npkJG+LB1h7K==?1-NPk{?6MYd#?z)UU0gh@ zR0!7SzOuPJzn3 zvd&o<^6j5`8O+Lp4*%uva(;s@4VVA=yW#vQ$yn;Fc_JQ_OomfARKaB^4{}a@L6R9q zV|txcFK?+oUAkI==8ncPmjYjCT`vDmOJ1j1f|=mC{kIN|`*S{vGfWrfeiGV!UH}{i zm9BiVQ7Hz}N}k=Y4M|;=*66@uO@=9(v${ww3{MFA_ID5}h00}Vl1hNRhs{ygHQ#E^ z*tJfa3u)w7Y2S1PMy{`nx^Q3_E6%K@fpUq3Iw)`i^gX=Ay*wWHHUC>j=d49m9R4Po zC7A>}7GV$$s^=ab*5Pbl?>tYHb(gS)r3~d_6PyLIFOmR0s9F*U%HUPL@(t%VTqbn4 z83&WTH9blygS^d^TcmK; zom3{!x>}Mm4lN3`bj^NDQ_$)hfX23!5SJ{HfifQ@?Ja|}SF!)c-2MJwn*Q_n5SBmk z2jTi3&?SrSU(J-tf*&`iSQf|?)f0}Dw}cDe+kT(q@D<9)kWX!&6TLi-+~=r-<|mZ| zD)R+sEyyC_ya+@AZG#f$NvfscPg*x@*II-ui|Wa)9HAfYD! zg%}QY13p2Su&kWHs8r^VFf03MwF?l~88^pDKkKA@*rQZLDmk zcIdbL+13kJ{U(xCJAIp4Phc^YzMC2s+WbtEDt^d`^g^}BejlsB>J^!mv+*0r> zR?1kGLXZ}7s>&R_l%9gwq{U+3E6T%|MVDgd-BIKGk}`Zkp`?zm($59;M~&#g-v3P@ zM33zrV@BAn{@}|8ZoQwLAm?MZF@ydhf)xmth<}y`sQs>C!qe)0mi7K7*`Nzrbxf?6Dy#fV(CBd;r~IWY%#Wx zMW$;j@bEYP+eEJf{t2j@ef$KWxsN#<=lQF1E__8+g)E0$hR6q<67Rb+P>p2>iMMH9 zsAbI&fsDP>cB0XQ)x=;(fe3;I3AI%-k8(0SSKGAKQ3*1&qYXa@^g}W}QhJ3K<2e!- z2`7K9Ei1k4HqnY5HW7=Bc2O6Zgk|oZs*?T&T|j*Q8+4KT@vmgszpGBuf3uVe2f>Y> z%x_UEy(XMaZSZBM-PM*Q#TI=Ne+^p-6|dOoQ#sv|$!(ceZ@+5(x1uVPx3Tt>42`I& z*5NF*_)_nMtV5hr10fVfZE+=4(EL*n%i@?ktsw+OYr-mEtdS;~_{acjg+Z8$+OMB6 zyB-U(wL1rPFh08l-5Dp()mF237F@;&dcPo9orbzbosh%i!%THMEhBl^r>0kh?-!+2D&XGxM2miLIrJx zG0rZnFAtuHU3@|3L$>9y9i01x%7DOe>ngYGYT8B5MeQ*kn@1L;f7+Ugb1TLqHG_^q z3McrB7O3y9K2T^8FSrW;Z|}pUzt?&^YM(_op6f?UAXZ;B41#?uVCI)Pc3pGyQrS(K zoqR=dY5Ihs$}T$%;Jvs&@*8vk{jM?SZ_p*}KcLIiNX&7ZEn`hJMgp;hnb$^0n%l)@ z6R`_bcy2+J7ptB-UEAlv?fbSr=-le{H=xmaZc14jbQLwy&|HI)s4hFwMs#y z)PfxG(04sV3{;ReGN|qUVIa--kC(_(){jg`9rq@t-<`x=R&n zE=>Ar>OTc7f`s6_aQ%i!to(SUq-Ika(jeHT8gf%}E(F3of9aj<4}RT7{ne9OP-7xm z)n2|K>$`-wr9tLAEU~J*iyNau@)q*Yzl>soW(c1H?LmSAq5UB58L?(klQw$7^YKN#6jkDxv5{ilzr@l< z4$eI1ZOg&V(=Cf{K>4i8^LWdK^#dXDU~0V>yEzTfF=rWwl4RKG?FXVG1};nLMNnaM zx?mp#g``&d<=mSM3!PTD;Y?_zK7W&0UzaZJURX_(V4J(xFn5WHZbK4J&}~ENp4G3 zC)t*`$s-z3juyqz)U_V)z8b+COSD{b`P$_nlLSZprt4@J8oedxH@jj3AoEQtW%A0Q zQ;TuRH5x!V4R%hBeTk;z-4^9b({7)SUlpuCO2-wQq7pf(<=)t!JO?14+4RFjEKiQ`uGk zA&kFDXZ|pR_|TF8PR|{jcnx6#C^x-SbY{tcKLQIP=#{I4<*&e*+;JqX!`zhr1@K8O7QL4G8_fxqQK)v*taYV{m@1WZqu!mo4-X-CXvn^lKb>pH$vhB+ zi|gL0J9*x z9q@LBfb5Qd=mn_vVfXeKevH{TL8X9VRm#DXg_Spcp9HPRUbSwmTnz0IP`qkq`?0HF zzJe}7qr{XOU_pUd$eKk*UeXwzDGZtxR|V3%HdNbPF!&!b5uCn!*Ph^)Y@oflb}Wd? z#@yw&A$BbFyJqS0!xEkFtrZaUSt{2pI{aW#JT_PldtnafQ<2Ofe}V)4HVY)jaFd0= zu%3gxj3YeVZF|(MQOWE*{qd2?;<2s&8Q|O*YPpGxWAx zEyJPb7zFw2N58!F6ORL(+qS8xJUe{KxO2U#*%I1?R%aT%RR#p_ryl37YoJTZp#Iq{ zaZkPHeZKG{8Ud<*l~#+G)Gf(yV-+AnDZ{#EbGc9xNZxTWnA@;$HRSCD5UeUgRT zWApBea}$%4;U@daU@}}A2l*h&Lvb?J8_|EfUlSjT?~Y>6tYw8ZVk-S?Vvl{{DEeb_ z)QiG*Ir?j(-)lx6$OC{?>w6pH6lQCNpl8y(M|Hy>3k?6(H=CCajO_C;bJPo^x&E1m z{h)afc6 zS*I3=YKE*_lmwA))Fw+4v6zWy^;v}G(?-SQLiO4Fc0|FV11EUB}R{MX1EQnz2 z=Be-Tc)PPt^66@{sk$x$l*A5T$O)9y3N->xCb{Ep$`D*V_{&fP9kI*^YLtPzC*~K^ zZ>}AS-B>X_NU`Y{;PX8)~c(_LmO0W$n|H^|@BKtDknDealyGRH}O4yiVYs z6&Y_Fk5LxZ9(eH{4SS5V@Hz|J7UjdY*i-Vyvlq%sBrAa7?1!yAqz*IIPc#FAXtEAP z*<$ek;_ww8UFdwu(qFAm`tqupWZ27;$=U`#(O~cP>9$_ej~j0hg}9y37f21mZn38q z&C!TcL#V}sW#R2zmAPJq&mW|b$bnZ&_))t4wnO0FpcPXVDJdS5a(I?7#twT+>%3h9 z?{e7V{^nbk9KDCIxk2CgAo*a$+8crrURTbGbggCE&Bq&Q(}=M32vsZrF4yUUkXftl zIJTInciZ0z^YuxMOh0T6Cg&|d`YOWryvDH|6fY?7=z>|&yCF#GJW%#b6bd-XfEMQh z!kh}?Q8-cAWX9AVp-c%~49DSz&a5dbW|0)KqXtv0T)c)|O+P#ZN1(FKu9?0mdx-RDlJP0Nw}4DnI`ti-*xyvsL> zxN76tJ<{34>{a7>Tx)BImX*D}uuzPmI32*`Ji9Lbsn1qhAMPi0I5oGP+0 z9PF0Ap44f-=~-nrfkqOj-#D%`f~2Q@fM%R5q0%ll0L(w1b}e5@>eTxEu{tYUn+ zp2lpcc1{g3xg{~`akxKMG>9w3TvzgW)u+>6WlRy;iy)6T>p1eIeG~(jY(-+P)Im(g zHa{%KB#P^2J`8`vNhjaOG>x$#o-?9s^r+d+0Nqbpz>wX?&aJv73$)0JlaLY;V?Wz! zD6E`g_xD|ao&4Zaec-YX(rmet5ral9mI8dyxJT5S{8GI0AR$5^lZPn}^J{bLr3^3K zTo#mud5+VVYGa*uf(%33WT_nXp29^LK=Tmg&Z%V7G;zKCKF>INS0n^%Q!XX{BzlLo zu;QzZ=tr;+1Q1oj#v+&qn3Zar4YI@6l3MkU7*?0D{Pjs%yNjigoQd6JJ1G*@t95yhedMHL!i?7~!{+CwgUZzab_L*6%*p*A$byDc+bV&QoFP7;%f zY0(ein|_pDV*EO^^hf{)jPL0OBwj81ae9_05#Y3eQ{Q0A%sm)jpE)GA#Qrcuhj}2` zJc_*5#qKyG#;*LQDEXN5DY0lp-m|YW4)smZdBU$Q7Xn1qdxb}RszkCWO8?!@@BTjEwrG^hG@d5@G4fhZV&@pd`pc zXf-4hMkXD_9G_GILHP8RU6Y|b93w;hC5ER~(X*>qS#I8&ls`&OPx`2QB*$k?Wcy|} zT^6G_I{Y?Jok|bEi{e|y{^O|8uXIoSY3DBErY8#8zpz`lTs^|lX9qPc5_o!E7oMUhHwKIY;@0ozZ+W8|6Zp5Q} zWyoq!u40EUP5AW)_$uC)Ig+EmDtD^zNy(rMTUnb3y@NW<>2r|HkTgw8cqf?Ec^C9Z zc9?3)B$Pn7k)^>D&TwZW$i9wYihC%fwpwzNcX|e-BbwXp4$YnC+X^pImmyFNrCtP-j)tDHF5FhQpe$Ie3hWo(NxES2 zv`ren-P-gm9N4>b2d(rhlt`49%QMV~-8tX8H{O z@j5jEbMThf?Kf&kVZ}09+e|@4p4~TQdt$8|UpUV>l@iBmfjf!YV9G{TwMMC2FRuv> zbpm|SnN=adrWDh_Pt<}Wsh{L-D*~?lovO)f1yJY95o2~CVd4f#>0@Wpa@!rZ!+QT~ zep>te%r+<3@4nl7RQyxAaF+et3!CRDw)R4K@*|Z0NWJ)ZD`O zY$t;B;pl3LIeywMbL9Sa!;!p>2yeKK;=jMpFg}rchL;06$C$Xd!Q6QDGPJPp<&FSf z@1GHV?JlHGpGuA+F%t}Vpj#_qLxXoY4{}Ttg9#O7@kipK50}oD*C?QC4%1Nk1xSI6 z{KNWw`;1!(zzun~9&8N4Y#h|<)2#R;-VU8w3>QB#V$Dk3kRer|)Jya#)?H7peNMg@ z&N0$+yhIf0OY4D%3AG+stsddfq{vTa8p8FO77M5D(u=ylSU1>faQo#J^c{}(^l^Gb z#n_&|bu4&eW;?pkN)Qfp`>H)DT)7z&L+Xq;&4bjTw}c5g*qftz8vP>CWf^ySf660l zaaf}$2n8aW8LN%Z{LC%(bUWpuOH{;5U-M{qn^^QiWlGF)bQyas%nSl_L&DKEoDL_1 z=hp?d`n;qKL_9~y{itJKdq|Exg}LU z36=u?_z|WiSb1P7G8&Csq46Zg80hS>IB&S5W#qJja}EX%p%z*qz$zNU23FdZY6X} zV6DdN04~iGk5q5krDX~Ojt03qi^C6 zFP{Lu*Al0D!i0vyhCKq0=tso@2$j+a#6|&R)IjL_01W_f{@8DT)W+4BWTJDG0K{{! zt07T2mN67diqIM9k;-d)^vY{cvzP)67at1hl+ct#zKh*tROfy5%X2>sAOkh^i1c;= z3vV-H6|mdv(^g(kBdd*HjPfO?AJ$gs%fn1RtTm)<>b#nxuN(#YTeHDcr$TJC37y+O z@K69;PY2XU!nTA-?)4YRc`^|7lxMQw6t@=%P&J7o+4M<7NwGV=dZ=`uE^rc%gjK8E zsSA9;_{(f7$3opN=Axv7O6NS`I_mChv*5M1i`n#=->MAd2czYW!G zDIAa7)2HcooGEDMlY?!dpVtOz0JIt4OK7+n!=4PbqiXBb-Uf3v1}4F3ia8z02E&Yv z7OK9Ck%7r9A(35D=#*0I!oQ(B`F=p^M08l>)oswc`6A1pTS{g1sVIZOOSe^^+g^$_ zm8lQ0RtO+QqIw@Fi!N;-oOpuW1K``PL;&$s3A&7;MQk(s-c0ReE{n-6J2d2&8*3%v zf4nlUFU%7c31GcGY8LQ!Ysil)XILhqE~6Q**5fspVup_~HO@|ed-Epx@8ssIX~(Fp zV2BObO7mP*87C|d!2!9_i=8rfHFz-s(|M)_x8iuj%vWS*#}ner{yP33WafliPPF1I zIK<3iH?0o@yMk7zk#V7*@5B>^P#ZUxX_G2XOL?;G1gOSlF$Jv9k-u zno7P*ib5+!Nej#Y4IO`o^uINuN``U4|Bo>h$`{=F`kP^kIs;DfXnKR+K{nySX6V~R zoTpGvQk0UJU`NO0Eh;5#N=7aYu`4*G*XJ4x`d<_(m}Z>_F(3R)L)$CC2GL0dO-!=~ zD{1wjcT31J8RRMtlCKXGn@#>GVhqZ&s?8j4thBn*VH=VbKwK5pLD&m!4RBtk(*?x@ zfkaQ@Z#K;A3$dh?)mCHde@cc>t3bKnvz_<_xtMKbq2Vb`o0S*~pE?^50Mg`=3R4v@ zjeAI!D83C=Ga@+@(D1Io15Xp6MWJNRUau5@T{pYLS#M!3w%$bSZa4tE6H_8c^2=uO z;a&k!Ua2exUr6^4d;xc{Z17Arm1kDvFwTu*BOe`z1!F0Lg$8D{=((!0^a4N$ITCO^ zQQ3k&F1`(f4Zfa;Y?Aqg77;<*Sm%*NEIp~LiaOUW->P3bZIYCmG26(B?F!u_CjjL5 z7V>pmXOKP>sPqCXt#$Dtpxg=@CTbZeim5i>P8VI&%TVwVPg-ps8@!4Uskr88GEtfU z0384Mr>Z2hznkH3fyksEK=@lW&>_K$jsHy3HNJkLPZPj@NYw>BRaen2%+7=7QxUxb z)>y}syF{(UP9lo&qsN->VCx~5;^V4IZK9QeR2Pla;-)I%nuv~B&GfNDfweA?USm2^CU7Q?conC5bM<}u|H2xNUN}XnA=E{{$ zU-4+6f_+I`CD0&y?&2&`iD@|%AcomXyEjlSoy-7jP+$~zc@R}VB06C9j!835Jk;;7 z`1Y#?yV68=#vQrcttvHa6BsZd)9r}ge60n(V|oi7A_6RbiOmwWn5JDIB-?{EQB4S1 zI{uKz3{0WATPm;lv`ax5!0y`B;y}1kf0H=2L92CU@hfWb>(W3VjvE|rZ1hL>ub`DLJY#x8`I^T-*H}tDw$51fcgOa;i<4) z_LPde8M*oEN=Dbgrychf?;MD9pJ=E}@Bjr!&P%W)itJ_klWh zjcGueTPXvrpMxPpJBACVw`UT0;w5QmfM#`zV~M&^8wCRE>2o^-Tef9>6X{)vHkKyP zyM&2&JZ-<=WBmn|BKxH2CcVS-kY69DwDic5-KoRcwM@9{BINLK`q`N&(KwR}64Jlo zU5;G>`l}n05D(h!SwLm*a$WESS9!i=tlQgm(vN73$LMH;J37*}%0iQAN}{*;N$GHx z;xA-B49*U|%co?qZ(Y%=BPa9EUpAk>j@6kejqeW(RVk@`I;9~ILtmAD(gQ>bY;P9c zBolu1(m7`iSoi*A3waT~m|)80*rzxN9Z*PUhf!A}5%1_?B9=hZH;Gq0;Iu=-UD3K& zk{bNpbWSpJuyy}}qhL`1I=22v#{J1!5C#?FOXy3$Z2l>nN%x85pqCN(e29~q`#R%{ zyu$)ZWW3?_4(d-TfA-Vvl39;g)ia_7p%(o{Qn*9@)-k5xboA}!gm)vAO}z!5^Jkv& zhj|4^?I9N4ZI*c0b+{Vz4Q!u@ERLW%XSy@@0_~Gs@c}q4!dK1|Qgk z`&&>{R-dT@iWh0Evch?*=9*W$=;Arw&kRi>m@IfKwj|~*R7^dr^DK$3D>T~oogecw zzvY;UgK4H44xYipO6d1$n(OrvoW$kJ8j5IMhyPz~*B#YV)^AAyQl&^4X-Y?`qJ$<= z6Qu<(bfid;-a$k}A)yW>bYy@5rGrwW4+x^v(2?eVK7;1y}Lcrtj0~E9x6?9uy^* z?Xr{{XHa%I!e*0%A7Zoh-{xw6w;qwXCVEhGJg}|Rm1^|d4fDMkfA5txqPDpGm;?Ll zOjU_!@KG-Ma#P9douh)~g&T4qCTok26ircD6{{U}i5l}1*V4*9ZnLNTX3Kj${t=DN zXy@Gyg!GvarZ=tlfQU4)?xgs;0-Q|!) zMX@2yI^Y{Hm%nOXQ00yO+P>gq7Z*uRCu-U0?cjg&Mj*6UI-#G!Fybz+k%dP+!traV ziHo%tO$gIixl?OQiLUFsoQABUO@8P^aP~3UlUj1e$9imy2i0xYk$16h zzMp-lqEI}W5P_|A_2eIT4&b)JIz+R<)mw*;tc zh%a=;Cm|g_w$t3OOO1!i70HU1Nj<#f?dLkS*qn0CMZ|GJ>o{w8a5%`}$?w1JkWWq) zyH5xoOTZ6=_$?!a0}JVembD)hWgc=@M<1z2U~>kfM4nsBi?DxW(QtxL4x=8cF*0P` z2*+(mDnwc@Rz8|6g-^so$xPrSbD`onNx0F}p|#RDmp+@Jw2g7tQ*Edzoj{ncbE3WX z;OHUhVP>U6+w+;@vlydq%-EE*(2PsJI*nG>@gsKTJ7e-{Kd#CesQ|0i93?`I6YvdNFUqxgRJrXSN)w>If&d{3yWz zG0?j*vXl*cU;bj^P5CPNPc97oqdAkt5~U3MuScu0(Ba^D?G$9o+rW3iE&&Z6lhwsp zL&j{XYw){|d*zd;by)qT%9rQtXfMgG$RA-grZ0T4n0Hrcs%}1NuKLIl@wElFQZZve z^WlwvmfJerFrONY&QWYjvM!mxllQ#derxCB(#M|H*kIG`sos60)q;QZ{E=h^G4tPH_Gw5}mh&JQ zUQZXl9Z7gnU}h(id)1;(mXBq%Vxw#Fj=aTvOWpcR+V)Ro4uW!bj4vq+3P139b>*Yw z>ba;N20^RhMeIjib2E(?iX1)ZP7o_aqkl9vh(9CvxJqpA8^J?OKBAD#A^SSrh|XwuL$P1|D>!9jD$l{Y!Eh^} z|H+<}OwstGoSUGm=*z}xZ>DrGSj`DBwB+`!6)akpmMfu5FC@vVb4jRWa zjM!WM5iQA29q)PmfZJoTFgeXTGy8r*(>eZ!<#sj!vUh)UQ*emHm=w$!b;#J<{&eHz zWUjq z+%9JYx(A&x5w>HGV7-vsa@+DiDY5Ij z6ID-UB@`rvLVUFbB;=2YI?wg z-Vr|(h?cRh*q?lF*SnJ>cIeej_aVBSqW&u5M*gOLCrw$oF~_^CG`6*w0`e~$tS>cs z%KO|nsP>k;qQCI<&!x_cXNgmEnjGiTKuYpdKcmRhfYV6OJSdwBxTdmVK3Q(bLWd8` zMX3t;zhBr-6;9>ot7P(i9?8`wauI^lz)K9#IW~PdBMsbLplH^FTk+s|Wy~^ag=@X2 zF6!~j2cM0n-<)X z$=?nvY}VP7y?ikhxY$D7nh7zm%fMV2lUL^92Rh!(cf1T0;yc?#8^ecuMz5w??6^X4 zJG$i4=8=oxc;O-r^M~f9~nXnnqn3mKKKDFr*g=?^P+hF9$C+Q3U&E-cMQi8OXk;YP3-HN zSe@=Gk}6e-Q>IP~RlA45(3o>#2F>QQim*mGp=sR)p^Ty9EsNwcDsp#38s~%sBJL$~ z%QM_yOM2~nW27F>_|z&=BvnDnss`oP-t-n%h~aD9l=Tql;nZvMcacW{4=|uVV)LQ~ z_M_L>Qg$c>ubs!LQrT8k=DiT(DfOcnU!kS7iOCb)20fC`>72aiREmk{iMFlP&9Pxl z79p+4$!Y&yliQ1(uE~)TMwGTjqA!{&cgkS3%TrHw-rdv7QTF-Fyz<$)IqbW6N$s?; zUzylqPfno$i&`U1F7SiXe_8PrF#Z~1WFmJx+_zXEs<}#js|9k6dO>{t_?I6SqHjWZ zXic~{K5O1ty=RCkilJwruYEo#m=VcCtza{1Gu%)bY>oF~o%MT6{ZjB*NQ*>k><6~B zNu`ws=Gqy)Pd>$kXY%#b%iNwEE&B>Q0R|L=t_UMJF-K)ef#& zM60a2CX4trX-;8X4QmsgpEHiTCMzB1dPk;Cyb5&9bSd2M-0H=1nDx1}3q6b_Dwy+f z0uynU^ZV9pKO;Lwd4(qW!|yQ-xQ|Xb$fY68C#2GVWAX353vXy2cpaS15C&O(cvfWa zuE=Av15;{|7ur^s0Q_^+3L2Gp4HIRZo19CRpQ@E1MpraTl=5yxeKrmFU%Nz!dqxSH zMdAAoDO=*z0&XynQ~FGqws+@2Tb{e#Xi;v5-89hFFfGAwkDOD7CLz(01cXg>WjW1oFp>!k$i@dv33#lA-Mnl|Bxy>hm)R zm5ZdB^No?YAFudB?C@$Q3Dp_UG^qC2c;S#E}9r+T9@19QYEP|+Jlv_66gsj{jvc9)DrntDV zC^3$eiR<7O*cCveBF55E$>_-{F4p0X)%S5@AqzHPd{lco8wnNGqZk#gH?6wSnqi_n z%iP^i?qRCV6k`3rTUT)nS>i2{CC1+2+c%U00j`aicKCX}5{nHAoW`oOt6Ny9j) zs@UasWg~aIO>gNCYAXeXt8S{hj(xV!< z2pW2S$NsVu3MCs=i0;7vGwtHHJ=2Sm!L3oorf!c4(rELuQI_Qem!boI59c(y1#4rZ8H$RW zY&;rLV_N@hU)*gXM!_1k1s(QIW!|KvGR_hVrxr?j-yMNvKU**A$%)NecE=jm@vG2> z!onE_)=TR}FKxmY?{28We`MLR1-8u!fZy59l+h#YytJZn1xsj(oZWk%Xd?>eL`j)f zN;e>TnlHWz>_Vfo+(b|A;}^1Ksg{JfZdxF+edQ_E(9^qF+HiPdP@L&rZCJ+Hy1mc) z_Q>IMpu8o00)iqS z;1dcO6Gae35Jdn75CK3w0RSk?=ZG#vL>HXgIvTPhpAwkY8t-2pwo}dO}kd&f8|tRj&`;t8cwQVrQx_l_!;uD>db+Sk)RlkX3BvOd)%6his)m|sI`C6hga2-O1+Y~| z!U49PuC<{i0uGBzzIsJUM&b%o;+hnXl&r!PDTQm$e<{QZ&x?fXs_VhvNLXaFj*Y(q zR7O%t@*kOgcK+$l&QlROZ`bjUe*NDAaKiJVbX0Y38L8d^QlAXie-0bhKU0QlNM4nZ z{<|+f13vqYfZ(44|Nk5in6JNw5d#dP-RUs$*w|hBJ1G+))2|QF6l?Gzj8(J5!QdsD y5pvpOGc0!{G>Z{UalosD&k%!`p`e0`r)|R9kkBsvifD=fUT0J<@-lddQvV- Date: Tue, 25 Mar 2025 21:07:34 +0200 Subject: [PATCH 2/9] Bugfix: Handle seekhead for cues on mkv files. --- .../exoplayer/e2etest/MkvPlaybackTest.java | 3 +- .../extractor/mkv/MatroskaExtractor.java | 35 +- .../extractor/mkv/MatroskaExtractorTest.java | 11 + .../media/mkv/sample_recursive_seekhead.mkv | Bin 0 -> 109503 bytes .../mkv/sample_recursive_seekhead.mkv.dump | 524 ++++++++++++++++++ 5 files changed, 570 insertions(+), 3 deletions(-) create mode 100644 libraries/test_data/src/test/assets/media/mkv/sample_recursive_seekhead.mkv create mode 100644 libraries/test_data/src/test/assets/playbackdumps/mkv/sample_recursive_seekhead.mkv.dump diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/MkvPlaybackTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/MkvPlaybackTest.java index bc557596504..457e7e1b00d 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/MkvPlaybackTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/MkvPlaybackTest.java @@ -57,7 +57,8 @@ public static ImmutableList mediaSamples() { "sample_with_overlapping_srt.mkv", "sample_with_vtt_subtitles.mkv", "sample_with_null_terminated_vtt_subtitles.mkv", - "sample_with_vobsub.mkv"); + "sample_with_vobsub.mkv", + "sample_recursive_seekhead.mkv"); } @ParameterizedRobolectricTestRunner.Parameter public String inputFile; diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java index d88d1abe922..bcfd43a0b45 100644 --- a/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java +++ b/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java @@ -456,6 +456,9 @@ public static ExtractorsFactory newFactory(SubtitleParser.Factory subtitleParser // Cue related elements. private boolean seekForCues; + private boolean seekForSeekContent; + private long seekPositionAfterSeekingForHead = C.INDEX_UNSET; + private long seekHeadContentPosition = C.INDEX_UNSET; private long cuesContentPosition = C.INDEX_UNSET; private long seekPositionAfterBuildingCues = C.INDEX_UNSET; private long clusterTimecodeUs = C.TIME_UNSET; @@ -764,6 +767,10 @@ protected void startMasterElement(int id, long contentPosition, long contentSize if (seekForCuesEnabled && cuesContentPosition != C.INDEX_UNSET) { // We know where the Cues element is located. Seek to request it. seekForCues = true; + } else if (seekForCuesEnabled && seekHeadContentPosition != C.INDEX_UNSET) { + // We do not know where the cues are located, however we have a seek-head entry + // we have not yet visited + seekForSeekContent = true; } else { // We don't know where the Cues element is located. It's most likely omitted. Allow // playback, but disable seeking. @@ -816,9 +823,16 @@ protected void endMasterElement(int id) throws ParserException { if (seekEntryId == UNSET_ENTRY_ID || seekEntryPosition == C.INDEX_UNSET) { throw ParserException.createForMalformedContainer( "Mandatory element SeekID or SeekPosition not found", /* cause= */ null); - } - if (seekEntryId == ID_CUES) { + } else if (seekEntryId == ID_SEEK_HEAD) { + seekHeadContentPosition = seekEntryPosition; + } else if (seekEntryId == ID_CUES) { cuesContentPosition = seekEntryPosition; + + // We are currently seeking from the seek-head, so we seek again to get to the cues + // instead of waiting for the cluster + if (seekForCuesEnabled && seekPositionAfterSeekingForHead != C.INDEX_UNSET) { + seekForCues = true; + } } break; case ID_CUES: @@ -1936,6 +1950,13 @@ private SeekMap buildSeekMap( * @return Whether the seek position was updated. */ private boolean maybeSeekForCues(PositionHolder seekPosition, long currentPosition) { + if (seekForSeekContent) { + seekPositionAfterSeekingForHead = currentPosition; + seekPosition.position = seekHeadContentPosition; + seekForSeekContent = false; + return true; + } + if (seekForCues) { seekPositionAfterBuildingCues = currentPosition; seekPosition.position = cuesContentPosition; @@ -1949,6 +1970,16 @@ private boolean maybeSeekForCues(PositionHolder seekPosition, long currentPositi seekPositionAfterBuildingCues = C.INDEX_UNSET; return true; } + + // After we have seeked back from seekPositionAfterBuildingCues seek back again to parse the + // rest of the file. This ends the double jump that is preformed when the beginning metadata + // only contains a ID_SEEK_HEAD without a ID_CUES. + if (sentSeekMap && seekPositionAfterSeekingForHead != C.INDEX_UNSET) { + seekPosition.position = seekPositionAfterSeekingForHead; + seekPositionAfterSeekingForHead = C.INDEX_UNSET; + return true; + } + return false; } diff --git a/libraries/extractor/src/test/java/androidx/media3/extractor/mkv/MatroskaExtractorTest.java b/libraries/extractor/src/test/java/androidx/media3/extractor/mkv/MatroskaExtractorTest.java index f267eff6aa1..b92d8783ba9 100644 --- a/libraries/extractor/src/test/java/androidx/media3/extractor/mkv/MatroskaExtractorTest.java +++ b/libraries/extractor/src/test/java/androidx/media3/extractor/mkv/MatroskaExtractorTest.java @@ -140,6 +140,17 @@ public void mkvSample_withNullTerminatedVttSubtitles() throws Exception { simulationConfig); } + // https://github.com/androidx/media/issues/1143 + @Test + public void mkvSample_withRecursiveSeekHead() throws Exception { + ExtractorAsserts.assertBehavior( + getExtractorFactory(subtitlesParsedDuringExtraction), + "media/mkv/sample_recursive_seekhead.mkv", + getAssertionConfigWithPrefix( + "media/mkv/sample_recursive_seekhead.mkv", subtitlesParsedDuringExtraction), + simulationConfig); + } + @Test public void mkvSample_withVorbisAudio() throws Exception { ExtractorAsserts.assertBehavior( diff --git a/libraries/test_data/src/test/assets/media/mkv/sample_recursive_seekhead.mkv b/libraries/test_data/src/test/assets/media/mkv/sample_recursive_seekhead.mkv new file mode 100644 index 0000000000000000000000000000000000000000..9714113e445dfac33209e8fbb0265f9bdfb4c95b GIT binary patch literal 109503 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 *!d-89skw?3TYHb8uTj7WV?@z#so_T1 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 z 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 Date: Wed, 26 Mar 2025 10:47:29 +0000 Subject: [PATCH 3/9] Add extractor test dump files --- .../mkv/sample_recursive_seekhead.mkv.0.dump | 271 ++++++++++++++++++ .../mkv/sample_recursive_seekhead.mkv.1.dump | 207 +++++++++++++ .../mkv/sample_recursive_seekhead.mkv.2.dump | 119 ++++++++ .../mkv/sample_recursive_seekhead.mkv.3.dump | 47 +++ ...recursive_seekhead.mkv.unknown_length.dump | 271 ++++++++++++++++++ .../sample_recursive_seekhead.mkv.0.dump | 271 ++++++++++++++++++ .../sample_recursive_seekhead.mkv.1.dump | 207 +++++++++++++ .../sample_recursive_seekhead.mkv.2.dump | 119 ++++++++ .../sample_recursive_seekhead.mkv.3.dump | 47 +++ ...recursive_seekhead.mkv.unknown_length.dump | 271 ++++++++++++++++++ 10 files changed, 1830 insertions(+) create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv/sample_recursive_seekhead.mkv.0.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv/sample_recursive_seekhead.mkv.1.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv/sample_recursive_seekhead.mkv.2.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv/sample_recursive_seekhead.mkv.3.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv/sample_recursive_seekhead.mkv.unknown_length.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_recursive_seekhead.mkv.0.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_recursive_seekhead.mkv.1.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_recursive_seekhead.mkv.2.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_recursive_seekhead.mkv.3.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_recursive_seekhead.mkv.unknown_length.dump diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv/sample_recursive_seekhead.mkv.0.dump b/libraries/test_data/src/test/assets/extractordumps/mkv/sample_recursive_seekhead.mkv.0.dump new file mode 100644 index 00000000000..c0bf7afa95a --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv/sample_recursive_seekhead.mkv.0.dump @@ -0,0 +1,271 @@ +seekMap: + isSeekable = true + duration = 1072000 + getPosition(0) = [[timeUs=67000, position=5576]] + getPosition(1) = [[timeUs=67000, position=5576]] + getPosition(536000) = [[timeUs=534000, position=84155], [timeUs=547000, position=77334]] + getPosition(1072000) = [[timeUs=1035000, position=106570]] +numberOfTracks = 2 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + containerMimeType = video/x-matroska + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 67000 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 134000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 100000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 267000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 200000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 167000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 234000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 400000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 334000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 300000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 367000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 500000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 467000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 434000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 634000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 567000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 534000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 600000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 767000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 700000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 667000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 734000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 900000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 834000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 800000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 867000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 1034000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 967000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 934000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 1000000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + containerMimeType = video/x-matroska + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 129000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 164000 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 198829 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 233000 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 268000 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 303000 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 337829 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 373000 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 408000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 443000 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 477829 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 512000 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 547000 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 581829 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 617000 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 652000 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 687000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 721829 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 757000 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 791000 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 826000 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 860829 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 896000 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 931000 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 965000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 999829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 1035000 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1069829 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1104000 + flags = 1 + data = length 418, hash 56AB8D37 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv/sample_recursive_seekhead.mkv.1.dump b/libraries/test_data/src/test/assets/extractordumps/mkv/sample_recursive_seekhead.mkv.1.dump new file mode 100644 index 00000000000..7f4ce38a737 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv/sample_recursive_seekhead.mkv.1.dump @@ -0,0 +1,207 @@ +seekMap: + isSeekable = true + duration = 1072000 + getPosition(0) = [[timeUs=67000, position=5576]] + getPosition(1) = [[timeUs=67000, position=5576]] + getPosition(536000) = [[timeUs=534000, position=84155], [timeUs=547000, position=77334]] + getPosition(1072000) = [[timeUs=1035000, position=106570]] +numberOfTracks = 2 +track 1: + total output bytes = 30995 + sample count = 22 + format 0: + id = 1 + containerMimeType = video/x-matroska + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 334000 + flags = 0 + data = length 953, hash 7160C661 + sample 1: + time = 300000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 2: + time = 367000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 3: + time = 500000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 4: + time = 467000 + flags = 0 + data = length 547, hash E31A6979 + sample 5: + time = 434000 + flags = 0 + data = length 570, hash FEC40D00 + sample 6: + time = 634000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 7: + time = 567000 + flags = 0 + data = length 1082, hash DA07059A + sample 8: + time = 534000 + flags = 0 + data = length 807, hash 93478E6B + sample 9: + time = 600000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 10: + time = 767000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 11: + time = 700000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 12: + time = 667000 + flags = 0 + data = length 794, hash 8126022C + sample 13: + time = 734000 + flags = 0 + data = length 645, hash F08300E5 + sample 14: + time = 900000 + flags = 0 + data = length 2684, hash 727FE378 + sample 15: + time = 834000 + flags = 0 + data = length 787, hash 419A7821 + sample 16: + time = 800000 + flags = 0 + data = length 649, hash 5C159346 + sample 17: + time = 867000 + flags = 0 + data = length 509, hash F912D655 + sample 18: + time = 1034000 + flags = 0 + data = length 1226, hash 29815C21 + sample 19: + time = 967000 + flags = 0 + data = length 898, hash D997AD0A + sample 20: + time = 934000 + flags = 0 + data = length 476, hash A0423645 + sample 21: + time = 1000000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 8778 + sample count = 21 + format 0: + id = 2 + containerMimeType = video/x-matroska + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 408000 + flags = 1 + data = length 418, hash CCC08A16 + sample 1: + time = 443000 + flags = 1 + data = length 418, hash 2A6EE863 + sample 2: + time = 477829 + flags = 1 + data = length 418, hash D69A9251 + sample 3: + time = 512000 + flags = 1 + data = length 418, hash BCFB758D + sample 4: + time = 547000 + flags = 1 + data = length 418, hash 11B66799 + sample 5: + time = 581829 + flags = 1 + data = length 418, hash C824D392 + sample 6: + time = 617000 + flags = 1 + data = length 418, hash C167D872 + sample 7: + time = 652000 + flags = 1 + data = length 418, hash 4221C855 + sample 8: + time = 687000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 9: + time = 721829 + flags = 1 + data = length 418, hash 984AA025 + sample 10: + time = 757000 + flags = 1 + data = length 418, hash BB788B46 + sample 11: + time = 791000 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 12: + time = 826000 + flags = 1 + data = length 418, hash DF1A460C + sample 13: + time = 860829 + flags = 1 + data = length 418, hash 2BDB56A + sample 14: + time = 896000 + flags = 1 + data = length 418, hash CA230060 + sample 15: + time = 931000 + flags = 1 + data = length 418, hash D2F19F41 + sample 16: + time = 965000 + flags = 1 + data = length 418, hash AF392D79 + sample 17: + time = 999829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 18: + time = 1035000 + flags = 1 + data = length 418, hash 733A35AE + sample 19: + time = 1069829 + flags = 1 + data = length 418, hash DE46E5D3 + sample 20: + time = 1104000 + flags = 1 + data = length 418, hash 56AB8D37 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv/sample_recursive_seekhead.mkv.2.dump b/libraries/test_data/src/test/assets/extractordumps/mkv/sample_recursive_seekhead.mkv.2.dump new file mode 100644 index 00000000000..43b212293ce --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv/sample_recursive_seekhead.mkv.2.dump @@ -0,0 +1,119 @@ +seekMap: + isSeekable = true + duration = 1072000 + getPosition(0) = [[timeUs=67000, position=5576]] + getPosition(1) = [[timeUs=67000, position=5576]] + getPosition(536000) = [[timeUs=534000, position=84155], [timeUs=547000, position=77334]] + getPosition(1072000) = [[timeUs=1035000, position=106570]] +numberOfTracks = 2 +track 1: + total output bytes = 10158 + sample count = 11 + format 0: + id = 1 + containerMimeType = video/x-matroska + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 700000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 1: + time = 667000 + flags = 0 + data = length 794, hash 8126022C + sample 2: + time = 734000 + flags = 0 + data = length 645, hash F08300E5 + sample 3: + time = 900000 + flags = 0 + data = length 2684, hash 727FE378 + sample 4: + time = 834000 + flags = 0 + data = length 787, hash 419A7821 + sample 5: + time = 800000 + flags = 0 + data = length 649, hash 5C159346 + sample 6: + time = 867000 + flags = 0 + data = length 509, hash F912D655 + sample 7: + time = 1034000 + flags = 0 + data = length 1226, hash 29815C21 + sample 8: + time = 967000 + flags = 0 + data = length 898, hash D997AD0A + sample 9: + time = 934000 + flags = 0 + data = length 476, hash A0423645 + sample 10: + time = 1000000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 4180 + sample count = 10 + format 0: + id = 2 + containerMimeType = video/x-matroska + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 791000 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 1: + time = 826000 + flags = 1 + data = length 418, hash DF1A460C + sample 2: + time = 860829 + flags = 1 + data = length 418, hash 2BDB56A + sample 3: + time = 896000 + flags = 1 + data = length 418, hash CA230060 + sample 4: + time = 931000 + flags = 1 + data = length 418, hash D2F19F41 + sample 5: + time = 965000 + flags = 1 + data = length 418, hash AF392D79 + sample 6: + time = 999829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 7: + time = 1035000 + flags = 1 + data = length 418, hash 733A35AE + sample 8: + time = 1069829 + flags = 1 + data = length 418, hash DE46E5D3 + sample 9: + time = 1104000 + flags = 1 + data = length 418, hash 56AB8D37 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv/sample_recursive_seekhead.mkv.3.dump b/libraries/test_data/src/test/assets/extractordumps/mkv/sample_recursive_seekhead.mkv.3.dump new file mode 100644 index 00000000000..48c34e1b993 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv/sample_recursive_seekhead.mkv.3.dump @@ -0,0 +1,47 @@ +seekMap: + isSeekable = true + duration = 1072000 + getPosition(0) = [[timeUs=67000, position=5576]] + getPosition(1) = [[timeUs=67000, position=5576]] + getPosition(536000) = [[timeUs=534000, position=84155], [timeUs=547000, position=77334]] + getPosition(1072000) = [[timeUs=1035000, position=106570]] +numberOfTracks = 2 +track 1: + total output bytes = 0 + sample count = 0 + format 0: + id = 1 + containerMimeType = video/x-matroska + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B +track 2: + total output bytes = 1254 + sample count = 3 + format 0: + id = 2 + containerMimeType = video/x-matroska + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 1035000 + flags = 1 + data = length 418, hash 733A35AE + sample 1: + time = 1069829 + flags = 1 + data = length 418, hash DE46E5D3 + sample 2: + time = 1104000 + flags = 1 + data = length 418, hash 56AB8D37 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv/sample_recursive_seekhead.mkv.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mkv/sample_recursive_seekhead.mkv.unknown_length.dump new file mode 100644 index 00000000000..c0bf7afa95a --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv/sample_recursive_seekhead.mkv.unknown_length.dump @@ -0,0 +1,271 @@ +seekMap: + isSeekable = true + duration = 1072000 + getPosition(0) = [[timeUs=67000, position=5576]] + getPosition(1) = [[timeUs=67000, position=5576]] + getPosition(536000) = [[timeUs=534000, position=84155], [timeUs=547000, position=77334]] + getPosition(1072000) = [[timeUs=1035000, position=106570]] +numberOfTracks = 2 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + containerMimeType = video/x-matroska + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 67000 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 134000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 100000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 267000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 200000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 167000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 234000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 400000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 334000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 300000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 367000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 500000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 467000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 434000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 634000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 567000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 534000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 600000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 767000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 700000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 667000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 734000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 900000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 834000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 800000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 867000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 1034000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 967000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 934000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 1000000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + containerMimeType = video/x-matroska + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 129000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 164000 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 198829 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 233000 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 268000 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 303000 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 337829 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 373000 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 408000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 443000 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 477829 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 512000 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 547000 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 581829 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 617000 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 652000 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 687000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 721829 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 757000 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 791000 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 826000 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 860829 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 896000 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 931000 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 965000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 999829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 1035000 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1069829 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1104000 + flags = 1 + data = length 418, hash 56AB8D37 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_recursive_seekhead.mkv.0.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_recursive_seekhead.mkv.0.dump new file mode 100644 index 00000000000..c0bf7afa95a --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_recursive_seekhead.mkv.0.dump @@ -0,0 +1,271 @@ +seekMap: + isSeekable = true + duration = 1072000 + getPosition(0) = [[timeUs=67000, position=5576]] + getPosition(1) = [[timeUs=67000, position=5576]] + getPosition(536000) = [[timeUs=534000, position=84155], [timeUs=547000, position=77334]] + getPosition(1072000) = [[timeUs=1035000, position=106570]] +numberOfTracks = 2 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + containerMimeType = video/x-matroska + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 67000 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 134000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 100000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 267000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 200000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 167000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 234000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 400000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 334000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 300000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 367000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 500000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 467000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 434000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 634000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 567000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 534000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 600000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 767000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 700000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 667000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 734000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 900000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 834000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 800000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 867000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 1034000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 967000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 934000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 1000000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + containerMimeType = video/x-matroska + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 129000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 164000 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 198829 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 233000 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 268000 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 303000 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 337829 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 373000 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 408000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 443000 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 477829 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 512000 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 547000 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 581829 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 617000 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 652000 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 687000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 721829 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 757000 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 791000 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 826000 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 860829 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 896000 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 931000 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 965000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 999829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 1035000 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1069829 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1104000 + flags = 1 + data = length 418, hash 56AB8D37 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_recursive_seekhead.mkv.1.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_recursive_seekhead.mkv.1.dump new file mode 100644 index 00000000000..7f4ce38a737 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_recursive_seekhead.mkv.1.dump @@ -0,0 +1,207 @@ +seekMap: + isSeekable = true + duration = 1072000 + getPosition(0) = [[timeUs=67000, position=5576]] + getPosition(1) = [[timeUs=67000, position=5576]] + getPosition(536000) = [[timeUs=534000, position=84155], [timeUs=547000, position=77334]] + getPosition(1072000) = [[timeUs=1035000, position=106570]] +numberOfTracks = 2 +track 1: + total output bytes = 30995 + sample count = 22 + format 0: + id = 1 + containerMimeType = video/x-matroska + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 334000 + flags = 0 + data = length 953, hash 7160C661 + sample 1: + time = 300000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 2: + time = 367000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 3: + time = 500000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 4: + time = 467000 + flags = 0 + data = length 547, hash E31A6979 + sample 5: + time = 434000 + flags = 0 + data = length 570, hash FEC40D00 + sample 6: + time = 634000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 7: + time = 567000 + flags = 0 + data = length 1082, hash DA07059A + sample 8: + time = 534000 + flags = 0 + data = length 807, hash 93478E6B + sample 9: + time = 600000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 10: + time = 767000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 11: + time = 700000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 12: + time = 667000 + flags = 0 + data = length 794, hash 8126022C + sample 13: + time = 734000 + flags = 0 + data = length 645, hash F08300E5 + sample 14: + time = 900000 + flags = 0 + data = length 2684, hash 727FE378 + sample 15: + time = 834000 + flags = 0 + data = length 787, hash 419A7821 + sample 16: + time = 800000 + flags = 0 + data = length 649, hash 5C159346 + sample 17: + time = 867000 + flags = 0 + data = length 509, hash F912D655 + sample 18: + time = 1034000 + flags = 0 + data = length 1226, hash 29815C21 + sample 19: + time = 967000 + flags = 0 + data = length 898, hash D997AD0A + sample 20: + time = 934000 + flags = 0 + data = length 476, hash A0423645 + sample 21: + time = 1000000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 8778 + sample count = 21 + format 0: + id = 2 + containerMimeType = video/x-matroska + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 408000 + flags = 1 + data = length 418, hash CCC08A16 + sample 1: + time = 443000 + flags = 1 + data = length 418, hash 2A6EE863 + sample 2: + time = 477829 + flags = 1 + data = length 418, hash D69A9251 + sample 3: + time = 512000 + flags = 1 + data = length 418, hash BCFB758D + sample 4: + time = 547000 + flags = 1 + data = length 418, hash 11B66799 + sample 5: + time = 581829 + flags = 1 + data = length 418, hash C824D392 + sample 6: + time = 617000 + flags = 1 + data = length 418, hash C167D872 + sample 7: + time = 652000 + flags = 1 + data = length 418, hash 4221C855 + sample 8: + time = 687000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 9: + time = 721829 + flags = 1 + data = length 418, hash 984AA025 + sample 10: + time = 757000 + flags = 1 + data = length 418, hash BB788B46 + sample 11: + time = 791000 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 12: + time = 826000 + flags = 1 + data = length 418, hash DF1A460C + sample 13: + time = 860829 + flags = 1 + data = length 418, hash 2BDB56A + sample 14: + time = 896000 + flags = 1 + data = length 418, hash CA230060 + sample 15: + time = 931000 + flags = 1 + data = length 418, hash D2F19F41 + sample 16: + time = 965000 + flags = 1 + data = length 418, hash AF392D79 + sample 17: + time = 999829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 18: + time = 1035000 + flags = 1 + data = length 418, hash 733A35AE + sample 19: + time = 1069829 + flags = 1 + data = length 418, hash DE46E5D3 + sample 20: + time = 1104000 + flags = 1 + data = length 418, hash 56AB8D37 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_recursive_seekhead.mkv.2.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_recursive_seekhead.mkv.2.dump new file mode 100644 index 00000000000..43b212293ce --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_recursive_seekhead.mkv.2.dump @@ -0,0 +1,119 @@ +seekMap: + isSeekable = true + duration = 1072000 + getPosition(0) = [[timeUs=67000, position=5576]] + getPosition(1) = [[timeUs=67000, position=5576]] + getPosition(536000) = [[timeUs=534000, position=84155], [timeUs=547000, position=77334]] + getPosition(1072000) = [[timeUs=1035000, position=106570]] +numberOfTracks = 2 +track 1: + total output bytes = 10158 + sample count = 11 + format 0: + id = 1 + containerMimeType = video/x-matroska + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 700000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 1: + time = 667000 + flags = 0 + data = length 794, hash 8126022C + sample 2: + time = 734000 + flags = 0 + data = length 645, hash F08300E5 + sample 3: + time = 900000 + flags = 0 + data = length 2684, hash 727FE378 + sample 4: + time = 834000 + flags = 0 + data = length 787, hash 419A7821 + sample 5: + time = 800000 + flags = 0 + data = length 649, hash 5C159346 + sample 6: + time = 867000 + flags = 0 + data = length 509, hash F912D655 + sample 7: + time = 1034000 + flags = 0 + data = length 1226, hash 29815C21 + sample 8: + time = 967000 + flags = 0 + data = length 898, hash D997AD0A + sample 9: + time = 934000 + flags = 0 + data = length 476, hash A0423645 + sample 10: + time = 1000000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 4180 + sample count = 10 + format 0: + id = 2 + containerMimeType = video/x-matroska + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 791000 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 1: + time = 826000 + flags = 1 + data = length 418, hash DF1A460C + sample 2: + time = 860829 + flags = 1 + data = length 418, hash 2BDB56A + sample 3: + time = 896000 + flags = 1 + data = length 418, hash CA230060 + sample 4: + time = 931000 + flags = 1 + data = length 418, hash D2F19F41 + sample 5: + time = 965000 + flags = 1 + data = length 418, hash AF392D79 + sample 6: + time = 999829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 7: + time = 1035000 + flags = 1 + data = length 418, hash 733A35AE + sample 8: + time = 1069829 + flags = 1 + data = length 418, hash DE46E5D3 + sample 9: + time = 1104000 + flags = 1 + data = length 418, hash 56AB8D37 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_recursive_seekhead.mkv.3.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_recursive_seekhead.mkv.3.dump new file mode 100644 index 00000000000..48c34e1b993 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_recursive_seekhead.mkv.3.dump @@ -0,0 +1,47 @@ +seekMap: + isSeekable = true + duration = 1072000 + getPosition(0) = [[timeUs=67000, position=5576]] + getPosition(1) = [[timeUs=67000, position=5576]] + getPosition(536000) = [[timeUs=534000, position=84155], [timeUs=547000, position=77334]] + getPosition(1072000) = [[timeUs=1035000, position=106570]] +numberOfTracks = 2 +track 1: + total output bytes = 0 + sample count = 0 + format 0: + id = 1 + containerMimeType = video/x-matroska + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B +track 2: + total output bytes = 1254 + sample count = 3 + format 0: + id = 2 + containerMimeType = video/x-matroska + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 1035000 + flags = 1 + data = length 418, hash 733A35AE + sample 1: + time = 1069829 + flags = 1 + data = length 418, hash DE46E5D3 + sample 2: + time = 1104000 + flags = 1 + data = length 418, hash 56AB8D37 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_recursive_seekhead.mkv.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_recursive_seekhead.mkv.unknown_length.dump new file mode 100644 index 00000000000..c0bf7afa95a --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_recursive_seekhead.mkv.unknown_length.dump @@ -0,0 +1,271 @@ +seekMap: + isSeekable = true + duration = 1072000 + getPosition(0) = [[timeUs=67000, position=5576]] + getPosition(1) = [[timeUs=67000, position=5576]] + getPosition(536000) = [[timeUs=534000, position=84155], [timeUs=547000, position=77334]] + getPosition(1072000) = [[timeUs=1035000, position=106570]] +numberOfTracks = 2 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + containerMimeType = video/x-matroska + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 67000 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 134000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 100000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 267000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 200000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 167000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 234000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 400000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 334000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 300000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 367000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 500000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 467000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 434000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 634000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 567000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 534000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 600000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 767000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 700000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 667000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 734000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 900000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 834000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 800000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 867000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 1034000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 967000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 934000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 1000000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + containerMimeType = video/x-matroska + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 129000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 164000 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 198829 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 233000 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 268000 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 303000 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 337829 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 373000 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 408000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 443000 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 477829 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 512000 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 547000 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 581829 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 617000 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 652000 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 687000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 721829 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 757000 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 791000 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 826000 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 860829 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 896000 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 931000 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 965000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 999829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 1035000 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1069829 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1104000 + flags = 1 + data = length 418, hash 56AB8D37 +tracksEnded = true From f5a6ed0f3f5e3ad827e886de088bd93ecbc2178e Mon Sep 17 00:00:00 2001 From: Ian Baker Date: Wed, 26 Mar 2025 15:10:14 +0000 Subject: [PATCH 4/9] Experiment with adding a third SeekHead This file was crafted by hand in a hex editor by modifying `sample.mkv`: 1. Adding two SeekHead elements at the end, each with a single Seek entry, with the first pointing at the Cues element and the second pointing at the Tags element. 2. Update the original SeekHead element so the Seek entries that previously pointed to the Cues and Tags element now point out the two new SeekHead elements we added. The resulting file is successfully parsed by `mkvinfo` and playable with VLC. The dump files were generated with all changes in MatroskaExtractor reverted (which is why they're unseekable). Bringing the MatroskaExtractor changes back and running the test results in a larger than expected diff in the dump file. Specifically all the samples are dropped. --- .../extractor/mkv/MatroskaExtractorTest.java | 10 + .../mkv/sample_three_seekheads.mkv.0.dump | 268 ++++++++++++++++++ ...le_three_seekheads.mkv.unknown_length.dump | 268 ++++++++++++++++++ .../sample_three_seekheads.mkv.0.dump | 268 ++++++++++++++++++ ...le_three_seekheads.mkv.unknown_length.dump | 268 ++++++++++++++++++ .../media/mkv/sample_recursive_seekhead.mkv | Bin 109503 -> 109508 bytes .../media/mkv/sample_three_seekheads.mkv | Bin 0 -> 109464 bytes 7 files changed, 1082 insertions(+) create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv/sample_three_seekheads.mkv.0.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv/sample_three_seekheads.mkv.unknown_length.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_three_seekheads.mkv.0.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_three_seekheads.mkv.unknown_length.dump create mode 100644 libraries/test_data/src/test/assets/media/mkv/sample_three_seekheads.mkv diff --git a/libraries/extractor/src/test/java/androidx/media3/extractor/mkv/MatroskaExtractorTest.java b/libraries/extractor/src/test/java/androidx/media3/extractor/mkv/MatroskaExtractorTest.java index b92d8783ba9..00b6ce94cfc 100644 --- a/libraries/extractor/src/test/java/androidx/media3/extractor/mkv/MatroskaExtractorTest.java +++ b/libraries/extractor/src/test/java/androidx/media3/extractor/mkv/MatroskaExtractorTest.java @@ -151,6 +151,16 @@ public void mkvSample_withRecursiveSeekHead() throws Exception { simulationConfig); } + @Test + public void mkvSample_threeSeekHeads() throws Exception { + ExtractorAsserts.assertBehavior( + getExtractorFactory(subtitlesParsedDuringExtraction), + "media/mkv/sample_three_seekheads.mkv", + getAssertionConfigWithPrefix( + "media/mkv/sample_three_seekheads.mkv", subtitlesParsedDuringExtraction), + simulationConfig); + } + @Test public void mkvSample_withVorbisAudio() throws Exception { ExtractorAsserts.assertBehavior( diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv/sample_three_seekheads.mkv.0.dump b/libraries/test_data/src/test/assets/extractordumps/mkv/sample_three_seekheads.mkv.0.dump new file mode 100644 index 00000000000..24923e19ec3 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv/sample_three_seekheads.mkv.0.dump @@ -0,0 +1,268 @@ +seekMap: + isSeekable = false + duration = 1072000 + getPosition(0) = [[timeUs=0, position=0]] +numberOfTracks = 2 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + containerMimeType = video/x-matroska + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 67000 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 134000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 100000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 267000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 200000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 167000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 234000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 400000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 334000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 300000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 367000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 500000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 467000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 434000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 634000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 567000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 534000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 600000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 767000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 700000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 667000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 734000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 900000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 834000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 800000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 867000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 1034000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 967000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 934000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 1000000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + containerMimeType = video/x-matroska + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 129000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 164000 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 198829 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 233000 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 268000 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 303000 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 337829 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 373000 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 408000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 443000 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 477829 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 512000 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 547000 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 581829 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 617000 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 652000 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 687000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 721829 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 757000 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 791000 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 826000 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 860829 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 896000 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 931000 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 965000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 999829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 1035000 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1069829 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1104000 + flags = 1 + data = length 418, hash 56AB8D37 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv/sample_three_seekheads.mkv.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mkv/sample_three_seekheads.mkv.unknown_length.dump new file mode 100644 index 00000000000..24923e19ec3 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv/sample_three_seekheads.mkv.unknown_length.dump @@ -0,0 +1,268 @@ +seekMap: + isSeekable = false + duration = 1072000 + getPosition(0) = [[timeUs=0, position=0]] +numberOfTracks = 2 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + containerMimeType = video/x-matroska + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 67000 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 134000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 100000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 267000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 200000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 167000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 234000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 400000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 334000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 300000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 367000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 500000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 467000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 434000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 634000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 567000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 534000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 600000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 767000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 700000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 667000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 734000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 900000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 834000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 800000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 867000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 1034000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 967000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 934000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 1000000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + containerMimeType = video/x-matroska + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 129000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 164000 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 198829 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 233000 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 268000 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 303000 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 337829 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 373000 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 408000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 443000 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 477829 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 512000 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 547000 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 581829 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 617000 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 652000 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 687000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 721829 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 757000 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 791000 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 826000 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 860829 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 896000 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 931000 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 965000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 999829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 1035000 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1069829 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1104000 + flags = 1 + data = length 418, hash 56AB8D37 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_three_seekheads.mkv.0.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_three_seekheads.mkv.0.dump new file mode 100644 index 00000000000..24923e19ec3 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_three_seekheads.mkv.0.dump @@ -0,0 +1,268 @@ +seekMap: + isSeekable = false + duration = 1072000 + getPosition(0) = [[timeUs=0, position=0]] +numberOfTracks = 2 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + containerMimeType = video/x-matroska + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 67000 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 134000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 100000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 267000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 200000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 167000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 234000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 400000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 334000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 300000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 367000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 500000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 467000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 434000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 634000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 567000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 534000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 600000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 767000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 700000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 667000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 734000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 900000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 834000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 800000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 867000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 1034000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 967000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 934000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 1000000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + containerMimeType = video/x-matroska + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 129000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 164000 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 198829 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 233000 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 268000 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 303000 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 337829 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 373000 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 408000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 443000 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 477829 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 512000 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 547000 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 581829 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 617000 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 652000 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 687000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 721829 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 757000 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 791000 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 826000 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 860829 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 896000 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 931000 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 965000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 999829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 1035000 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1069829 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1104000 + flags = 1 + data = length 418, hash 56AB8D37 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_three_seekheads.mkv.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_three_seekheads.mkv.unknown_length.dump new file mode 100644 index 00000000000..24923e19ec3 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_three_seekheads.mkv.unknown_length.dump @@ -0,0 +1,268 @@ +seekMap: + isSeekable = false + duration = 1072000 + getPosition(0) = [[timeUs=0, position=0]] +numberOfTracks = 2 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + containerMimeType = video/x-matroska + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 67000 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 134000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 100000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 267000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 200000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 167000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 234000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 400000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 334000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 300000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 367000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 500000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 467000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 434000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 634000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 567000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 534000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 600000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 767000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 700000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 667000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 734000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 900000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 834000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 800000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 867000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 1034000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 967000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 934000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 1000000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + containerMimeType = video/x-matroska + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 129000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 164000 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 198829 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 233000 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 268000 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 303000 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 337829 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 373000 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 408000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 443000 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 477829 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 512000 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 547000 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 581829 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 617000 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 652000 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 687000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 721829 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 757000 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 791000 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 826000 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 860829 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 896000 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 931000 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 965000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 999829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 1035000 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1069829 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1104000 + flags = 1 + data = length 418, hash 56AB8D37 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/media/mkv/sample_recursive_seekhead.mkv b/libraries/test_data/src/test/assets/media/mkv/sample_recursive_seekhead.mkv index 9714113e445dfac33209e8fbb0265f9bdfb4c95b..c2f697619c742fe06b051df75e4a6f363d2e4eef 100644 GIT binary patch delta 59 zcmdmgo$bhVwh6|J6BT+ywBR*O0?ZJuSjf6;5O;;3@9dIw K(QF>dC2&bdF_zu?@p-o3i39@kT! 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

OX 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 MK=RQ>2Je6T5B~1U3IG5A literal 0 HcmV?d00001 From a77bd285dcfe3ebd56eb5f487f55638625005e35 Mon Sep 17 00:00:00 2001 From: KingLucius Date: Fri, 28 Mar 2025 10:09:43 +0200 Subject: [PATCH 5/9] Fix: Allow any number of seek heads in MKV This fixes the seek once behavior by adding a list of pending seekheads that we can visist, if we do not find cues. --- .../extractor/mkv/MatroskaExtractor.java | 53 +++++++++++++++---- 1 file changed, 44 insertions(+), 9 deletions(-) diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java index 8ea5f9b3fa3..4138373b3b7 100644 --- a/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java +++ b/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java @@ -70,6 +70,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Map; @@ -457,8 +458,9 @@ public static ExtractorsFactory newFactory(SubtitleParser.Factory subtitleParser // Cue related elements. private boolean seekForCues; private boolean seekForSeekContent; + private final HashSet visitedSeekHeads = new HashSet<>(); + private final ArrayList pendingSeekHeads = new ArrayList<>(); private long seekPositionAfterSeekingForHead = C.INDEX_UNSET; - private long seekHeadContentPosition = C.INDEX_UNSET; private long cuesContentPosition = C.INDEX_UNSET; private long seekPositionAfterBuildingCues = C.INDEX_UNSET; private long clusterTimecodeUs = C.TIME_UNSET; @@ -596,7 +598,7 @@ public final int read(ExtractorInput input, PositionHolder seekPosition) throws boolean continueReading = true; while (continueReading && !haveOutputSample) { continueReading = reader.read(input); - if (continueReading && maybeSeekForCues(seekPosition, input.getPosition())) { + if (maybeSeekForCues(seekPosition, input.getPosition())) { return Extractor.RESULT_SEEK; } } @@ -767,8 +769,8 @@ protected void startMasterElement(int id, long contentPosition, long contentSize if (seekForCuesEnabled && cuesContentPosition != C.INDEX_UNSET) { // We know where the Cues element is located. Seek to request it. seekForCues = true; - } else if (seekForCuesEnabled && seekHeadContentPosition != C.INDEX_UNSET) { - // We do not know where the cues are located, however we have a seek-head entry + } else if (seekForCuesEnabled && !pendingSeekHeads.isEmpty()) { + // We do not know where the cues are located, however we have seek-heads // we have not yet visited seekForSeekContent = true; } else { @@ -819,12 +821,34 @@ protected void endMasterElement(int id) throws ParserException { durationUs = scaleTimecodeToUs(durationTimecode); } break; + case ID_SEGMENT: + // We only care if we have not already sent the seek map + if (!sentSeekMap) { + // We have reached the end of the segment, however we can still decide how to handle + // pending seek heads. + // + // This is treated as the end as "Multiple Segment elements not supported" + if (!pendingSeekHeads.isEmpty() && seekForCuesEnabled) { + // We seek to the next seek point if we can seek and there is seek heads + seekForSeekContent = true; + } else { + // Otherwise, if we not found any cues nor any more seek heads then we mark + // this as unseekable. + extractorOutput.seekMap(new SeekMap.Unseekable(durationUs)); + sentSeekMap = true; + } + } + break; case ID_SEEK: if (seekEntryId == UNSET_ENTRY_ID || seekEntryPosition == C.INDEX_UNSET) { throw ParserException.createForMalformedContainer( "Mandatory element SeekID or SeekPosition not found", /* cause= */ null); } else if (seekEntryId == ID_SEEK_HEAD) { - seekHeadContentPosition = seekEntryPosition; + // We have a set here to prevent inf recursion, only if this seek head is non + // visited we add it. VLC limits this to 10, but this should work equally as well. + if (visitedSeekHeads.add(seekEntryPosition)) { + pendingSeekHeads.add(seekEntryPosition); + } } else if (seekEntryId == ID_CUES) { cuesContentPosition = seekEntryPosition; @@ -1950,10 +1974,22 @@ private SeekMap buildSeekMap( * @return Whether the seek position was updated. */ private boolean maybeSeekForCues(PositionHolder seekPosition, long currentPosition) { + // This seeks in a lazy manner, unlike VLC that seeks immediately when encountering a seek head. + // This minimizes the amount of seeking done, but also does not seek if the cues element is + // already found, even if seek heads exits. This might be nice to change if we need other + // critical information from seek heads. + // + // The nature of each recursive query becomes to consume as much content as possible + // (until cues or end of segment). However this also means that we only need to seek + // back to the top once, instead seeking back in a stack like manner. if (seekForSeekContent) { - seekPositionAfterSeekingForHead = currentPosition; - seekPosition.position = seekHeadContentPosition; + checkArgument(!pendingSeekHeads.isEmpty(), "Illegal value of seekForSeekContent"); + // The exact order does not really matter, but it is easiest to just do stack (FILO) + seekPosition.position = pendingSeekHeads.remove(pendingSeekHeads.size()-1); // removeLast not available seekForSeekContent = false; + if (seekPositionAfterSeekingForHead == C.INDEX_UNSET) { + seekPositionAfterSeekingForHead = currentPosition; + } return true; } @@ -1972,8 +2008,7 @@ private boolean maybeSeekForCues(PositionHolder seekPosition, long currentPositi } // After we have seeked back from seekPositionAfterBuildingCues seek back again to parse the - // rest of the file. This ends the double jump that is preformed when the beginning metadata - // only contains a ID_SEEK_HEAD without a ID_CUES. + // rest of the file. if (sentSeekMap && seekPositionAfterSeekingForHead != C.INDEX_UNSET) { seekPosition.position = seekPositionAfterSeekingForHead; seekPositionAfterSeekingForHead = C.INDEX_UNSET; From 3525b89ef2bdb549bb9744cc7c51af3a56a2cb58 Mon Sep 17 00:00:00 2001 From: KingLucius Date: Fri, 28 Mar 2025 10:20:47 +0200 Subject: [PATCH 6/9] Update MatroskaExtractor.java --- .../java/androidx/media3/extractor/mkv/MatroskaExtractor.java | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java index 4bf1cda8cba..bb936af5b22 100644 --- a/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java +++ b/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java @@ -70,6 +70,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Map; From 705b31db25dd08708cf578e39b60e3b9e14574e0 Mon Sep 17 00:00:00 2001 From: Ian Baker Date: Fri, 28 Mar 2025 10:17:04 +0000 Subject: [PATCH 7/9] Update sample_three_seekheads dump files --- .../mkv/sample_recursive_seekhead.mkv.unknown_length.dump | 7 ++----- .../extractordumps/mkv/sample_three_seekheads.mkv.0.dump | 7 +++++-- .../sample_recursive_seekhead.mkv.unknown_length.dump | 7 ++----- .../sample_three_seekheads.mkv.0.dump | 7 +++++-- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv/sample_recursive_seekhead.mkv.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mkv/sample_recursive_seekhead.mkv.unknown_length.dump index c0bf7afa95a..24923e19ec3 100644 --- a/libraries/test_data/src/test/assets/extractordumps/mkv/sample_recursive_seekhead.mkv.unknown_length.dump +++ b/libraries/test_data/src/test/assets/extractordumps/mkv/sample_recursive_seekhead.mkv.unknown_length.dump @@ -1,10 +1,7 @@ seekMap: - isSeekable = true + isSeekable = false duration = 1072000 - getPosition(0) = [[timeUs=67000, position=5576]] - getPosition(1) = [[timeUs=67000, position=5576]] - getPosition(536000) = [[timeUs=534000, position=84155], [timeUs=547000, position=77334]] - getPosition(1072000) = [[timeUs=1035000, position=106570]] + getPosition(0) = [[timeUs=0, position=0]] numberOfTracks = 2 track 1: total output bytes = 89502 diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv/sample_three_seekheads.mkv.0.dump b/libraries/test_data/src/test/assets/extractordumps/mkv/sample_three_seekheads.mkv.0.dump index 24923e19ec3..c0bf7afa95a 100644 --- a/libraries/test_data/src/test/assets/extractordumps/mkv/sample_three_seekheads.mkv.0.dump +++ b/libraries/test_data/src/test/assets/extractordumps/mkv/sample_three_seekheads.mkv.0.dump @@ -1,7 +1,10 @@ seekMap: - isSeekable = false + isSeekable = true duration = 1072000 - getPosition(0) = [[timeUs=0, position=0]] + getPosition(0) = [[timeUs=67000, position=5576]] + getPosition(1) = [[timeUs=67000, position=5576]] + getPosition(536000) = [[timeUs=534000, position=84155], [timeUs=547000, position=77334]] + getPosition(1072000) = [[timeUs=1035000, position=106570]] numberOfTracks = 2 track 1: total output bytes = 89502 diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_recursive_seekhead.mkv.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_recursive_seekhead.mkv.unknown_length.dump index c0bf7afa95a..24923e19ec3 100644 --- a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_recursive_seekhead.mkv.unknown_length.dump +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_recursive_seekhead.mkv.unknown_length.dump @@ -1,10 +1,7 @@ seekMap: - isSeekable = true + isSeekable = false duration = 1072000 - getPosition(0) = [[timeUs=67000, position=5576]] - getPosition(1) = [[timeUs=67000, position=5576]] - getPosition(536000) = [[timeUs=534000, position=84155], [timeUs=547000, position=77334]] - getPosition(1072000) = [[timeUs=1035000, position=106570]] + getPosition(0) = [[timeUs=0, position=0]] numberOfTracks = 2 track 1: total output bytes = 89502 diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_three_seekheads.mkv.0.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_three_seekheads.mkv.0.dump index 24923e19ec3..c0bf7afa95a 100644 --- a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_three_seekheads.mkv.0.dump +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_three_seekheads.mkv.0.dump @@ -1,7 +1,10 @@ seekMap: - isSeekable = false + isSeekable = true duration = 1072000 - getPosition(0) = [[timeUs=0, position=0]] + getPosition(0) = [[timeUs=67000, position=5576]] + getPosition(1) = [[timeUs=67000, position=5576]] + getPosition(536000) = [[timeUs=534000, position=84155], [timeUs=547000, position=77334]] + getPosition(1072000) = [[timeUs=1035000, position=106570]] numberOfTracks = 2 track 1: total output bytes = 89502 From 5ee7bd2fa4f2416d3cb75c437444c20585d1a468 Mon Sep 17 00:00:00 2001 From: Ian Baker Date: Fri, 28 Mar 2025 15:03:04 +0000 Subject: [PATCH 8/9] Update dump files that were missed in the previous commit --- .../mkv/sample_three_seekheads.mkv.1.dump | 207 ++++++++++++++++++ .../mkv/sample_three_seekheads.mkv.2.dump | 119 ++++++++++ .../mkv/sample_three_seekheads.mkv.3.dump | 47 ++++ .../sample_three_seekheads.mkv.1.dump | 207 ++++++++++++++++++ .../sample_three_seekheads.mkv.2.dump | 119 ++++++++++ .../sample_three_seekheads.mkv.3.dump | 47 ++++ 6 files changed, 746 insertions(+) create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv/sample_three_seekheads.mkv.1.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv/sample_three_seekheads.mkv.2.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv/sample_three_seekheads.mkv.3.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_three_seekheads.mkv.1.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_three_seekheads.mkv.2.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_three_seekheads.mkv.3.dump diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv/sample_three_seekheads.mkv.1.dump b/libraries/test_data/src/test/assets/extractordumps/mkv/sample_three_seekheads.mkv.1.dump new file mode 100644 index 00000000000..7f4ce38a737 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv/sample_three_seekheads.mkv.1.dump @@ -0,0 +1,207 @@ +seekMap: + isSeekable = true + duration = 1072000 + getPosition(0) = [[timeUs=67000, position=5576]] + getPosition(1) = [[timeUs=67000, position=5576]] + getPosition(536000) = [[timeUs=534000, position=84155], [timeUs=547000, position=77334]] + getPosition(1072000) = [[timeUs=1035000, position=106570]] +numberOfTracks = 2 +track 1: + total output bytes = 30995 + sample count = 22 + format 0: + id = 1 + containerMimeType = video/x-matroska + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 334000 + flags = 0 + data = length 953, hash 7160C661 + sample 1: + time = 300000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 2: + time = 367000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 3: + time = 500000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 4: + time = 467000 + flags = 0 + data = length 547, hash E31A6979 + sample 5: + time = 434000 + flags = 0 + data = length 570, hash FEC40D00 + sample 6: + time = 634000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 7: + time = 567000 + flags = 0 + data = length 1082, hash DA07059A + sample 8: + time = 534000 + flags = 0 + data = length 807, hash 93478E6B + sample 9: + time = 600000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 10: + time = 767000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 11: + time = 700000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 12: + time = 667000 + flags = 0 + data = length 794, hash 8126022C + sample 13: + time = 734000 + flags = 0 + data = length 645, hash F08300E5 + sample 14: + time = 900000 + flags = 0 + data = length 2684, hash 727FE378 + sample 15: + time = 834000 + flags = 0 + data = length 787, hash 419A7821 + sample 16: + time = 800000 + flags = 0 + data = length 649, hash 5C159346 + sample 17: + time = 867000 + flags = 0 + data = length 509, hash F912D655 + sample 18: + time = 1034000 + flags = 0 + data = length 1226, hash 29815C21 + sample 19: + time = 967000 + flags = 0 + data = length 898, hash D997AD0A + sample 20: + time = 934000 + flags = 0 + data = length 476, hash A0423645 + sample 21: + time = 1000000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 8778 + sample count = 21 + format 0: + id = 2 + containerMimeType = video/x-matroska + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 408000 + flags = 1 + data = length 418, hash CCC08A16 + sample 1: + time = 443000 + flags = 1 + data = length 418, hash 2A6EE863 + sample 2: + time = 477829 + flags = 1 + data = length 418, hash D69A9251 + sample 3: + time = 512000 + flags = 1 + data = length 418, hash BCFB758D + sample 4: + time = 547000 + flags = 1 + data = length 418, hash 11B66799 + sample 5: + time = 581829 + flags = 1 + data = length 418, hash C824D392 + sample 6: + time = 617000 + flags = 1 + data = length 418, hash C167D872 + sample 7: + time = 652000 + flags = 1 + data = length 418, hash 4221C855 + sample 8: + time = 687000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 9: + time = 721829 + flags = 1 + data = length 418, hash 984AA025 + sample 10: + time = 757000 + flags = 1 + data = length 418, hash BB788B46 + sample 11: + time = 791000 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 12: + time = 826000 + flags = 1 + data = length 418, hash DF1A460C + sample 13: + time = 860829 + flags = 1 + data = length 418, hash 2BDB56A + sample 14: + time = 896000 + flags = 1 + data = length 418, hash CA230060 + sample 15: + time = 931000 + flags = 1 + data = length 418, hash D2F19F41 + sample 16: + time = 965000 + flags = 1 + data = length 418, hash AF392D79 + sample 17: + time = 999829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 18: + time = 1035000 + flags = 1 + data = length 418, hash 733A35AE + sample 19: + time = 1069829 + flags = 1 + data = length 418, hash DE46E5D3 + sample 20: + time = 1104000 + flags = 1 + data = length 418, hash 56AB8D37 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv/sample_three_seekheads.mkv.2.dump b/libraries/test_data/src/test/assets/extractordumps/mkv/sample_three_seekheads.mkv.2.dump new file mode 100644 index 00000000000..43b212293ce --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv/sample_three_seekheads.mkv.2.dump @@ -0,0 +1,119 @@ +seekMap: + isSeekable = true + duration = 1072000 + getPosition(0) = [[timeUs=67000, position=5576]] + getPosition(1) = [[timeUs=67000, position=5576]] + getPosition(536000) = [[timeUs=534000, position=84155], [timeUs=547000, position=77334]] + getPosition(1072000) = [[timeUs=1035000, position=106570]] +numberOfTracks = 2 +track 1: + total output bytes = 10158 + sample count = 11 + format 0: + id = 1 + containerMimeType = video/x-matroska + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 700000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 1: + time = 667000 + flags = 0 + data = length 794, hash 8126022C + sample 2: + time = 734000 + flags = 0 + data = length 645, hash F08300E5 + sample 3: + time = 900000 + flags = 0 + data = length 2684, hash 727FE378 + sample 4: + time = 834000 + flags = 0 + data = length 787, hash 419A7821 + sample 5: + time = 800000 + flags = 0 + data = length 649, hash 5C159346 + sample 6: + time = 867000 + flags = 0 + data = length 509, hash F912D655 + sample 7: + time = 1034000 + flags = 0 + data = length 1226, hash 29815C21 + sample 8: + time = 967000 + flags = 0 + data = length 898, hash D997AD0A + sample 9: + time = 934000 + flags = 0 + data = length 476, hash A0423645 + sample 10: + time = 1000000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 4180 + sample count = 10 + format 0: + id = 2 + containerMimeType = video/x-matroska + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 791000 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 1: + time = 826000 + flags = 1 + data = length 418, hash DF1A460C + sample 2: + time = 860829 + flags = 1 + data = length 418, hash 2BDB56A + sample 3: + time = 896000 + flags = 1 + data = length 418, hash CA230060 + sample 4: + time = 931000 + flags = 1 + data = length 418, hash D2F19F41 + sample 5: + time = 965000 + flags = 1 + data = length 418, hash AF392D79 + sample 6: + time = 999829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 7: + time = 1035000 + flags = 1 + data = length 418, hash 733A35AE + sample 8: + time = 1069829 + flags = 1 + data = length 418, hash DE46E5D3 + sample 9: + time = 1104000 + flags = 1 + data = length 418, hash 56AB8D37 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv/sample_three_seekheads.mkv.3.dump b/libraries/test_data/src/test/assets/extractordumps/mkv/sample_three_seekheads.mkv.3.dump new file mode 100644 index 00000000000..48c34e1b993 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv/sample_three_seekheads.mkv.3.dump @@ -0,0 +1,47 @@ +seekMap: + isSeekable = true + duration = 1072000 + getPosition(0) = [[timeUs=67000, position=5576]] + getPosition(1) = [[timeUs=67000, position=5576]] + getPosition(536000) = [[timeUs=534000, position=84155], [timeUs=547000, position=77334]] + getPosition(1072000) = [[timeUs=1035000, position=106570]] +numberOfTracks = 2 +track 1: + total output bytes = 0 + sample count = 0 + format 0: + id = 1 + containerMimeType = video/x-matroska + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B +track 2: + total output bytes = 1254 + sample count = 3 + format 0: + id = 2 + containerMimeType = video/x-matroska + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 1035000 + flags = 1 + data = length 418, hash 733A35AE + sample 1: + time = 1069829 + flags = 1 + data = length 418, hash DE46E5D3 + sample 2: + time = 1104000 + flags = 1 + data = length 418, hash 56AB8D37 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_three_seekheads.mkv.1.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_three_seekheads.mkv.1.dump new file mode 100644 index 00000000000..7f4ce38a737 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_three_seekheads.mkv.1.dump @@ -0,0 +1,207 @@ +seekMap: + isSeekable = true + duration = 1072000 + getPosition(0) = [[timeUs=67000, position=5576]] + getPosition(1) = [[timeUs=67000, position=5576]] + getPosition(536000) = [[timeUs=534000, position=84155], [timeUs=547000, position=77334]] + getPosition(1072000) = [[timeUs=1035000, position=106570]] +numberOfTracks = 2 +track 1: + total output bytes = 30995 + sample count = 22 + format 0: + id = 1 + containerMimeType = video/x-matroska + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 334000 + flags = 0 + data = length 953, hash 7160C661 + sample 1: + time = 300000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 2: + time = 367000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 3: + time = 500000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 4: + time = 467000 + flags = 0 + data = length 547, hash E31A6979 + sample 5: + time = 434000 + flags = 0 + data = length 570, hash FEC40D00 + sample 6: + time = 634000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 7: + time = 567000 + flags = 0 + data = length 1082, hash DA07059A + sample 8: + time = 534000 + flags = 0 + data = length 807, hash 93478E6B + sample 9: + time = 600000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 10: + time = 767000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 11: + time = 700000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 12: + time = 667000 + flags = 0 + data = length 794, hash 8126022C + sample 13: + time = 734000 + flags = 0 + data = length 645, hash F08300E5 + sample 14: + time = 900000 + flags = 0 + data = length 2684, hash 727FE378 + sample 15: + time = 834000 + flags = 0 + data = length 787, hash 419A7821 + sample 16: + time = 800000 + flags = 0 + data = length 649, hash 5C159346 + sample 17: + time = 867000 + flags = 0 + data = length 509, hash F912D655 + sample 18: + time = 1034000 + flags = 0 + data = length 1226, hash 29815C21 + sample 19: + time = 967000 + flags = 0 + data = length 898, hash D997AD0A + sample 20: + time = 934000 + flags = 0 + data = length 476, hash A0423645 + sample 21: + time = 1000000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 8778 + sample count = 21 + format 0: + id = 2 + containerMimeType = video/x-matroska + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 408000 + flags = 1 + data = length 418, hash CCC08A16 + sample 1: + time = 443000 + flags = 1 + data = length 418, hash 2A6EE863 + sample 2: + time = 477829 + flags = 1 + data = length 418, hash D69A9251 + sample 3: + time = 512000 + flags = 1 + data = length 418, hash BCFB758D + sample 4: + time = 547000 + flags = 1 + data = length 418, hash 11B66799 + sample 5: + time = 581829 + flags = 1 + data = length 418, hash C824D392 + sample 6: + time = 617000 + flags = 1 + data = length 418, hash C167D872 + sample 7: + time = 652000 + flags = 1 + data = length 418, hash 4221C855 + sample 8: + time = 687000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 9: + time = 721829 + flags = 1 + data = length 418, hash 984AA025 + sample 10: + time = 757000 + flags = 1 + data = length 418, hash BB788B46 + sample 11: + time = 791000 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 12: + time = 826000 + flags = 1 + data = length 418, hash DF1A460C + sample 13: + time = 860829 + flags = 1 + data = length 418, hash 2BDB56A + sample 14: + time = 896000 + flags = 1 + data = length 418, hash CA230060 + sample 15: + time = 931000 + flags = 1 + data = length 418, hash D2F19F41 + sample 16: + time = 965000 + flags = 1 + data = length 418, hash AF392D79 + sample 17: + time = 999829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 18: + time = 1035000 + flags = 1 + data = length 418, hash 733A35AE + sample 19: + time = 1069829 + flags = 1 + data = length 418, hash DE46E5D3 + sample 20: + time = 1104000 + flags = 1 + data = length 418, hash 56AB8D37 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_three_seekheads.mkv.2.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_three_seekheads.mkv.2.dump new file mode 100644 index 00000000000..43b212293ce --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_three_seekheads.mkv.2.dump @@ -0,0 +1,119 @@ +seekMap: + isSeekable = true + duration = 1072000 + getPosition(0) = [[timeUs=67000, position=5576]] + getPosition(1) = [[timeUs=67000, position=5576]] + getPosition(536000) = [[timeUs=534000, position=84155], [timeUs=547000, position=77334]] + getPosition(1072000) = [[timeUs=1035000, position=106570]] +numberOfTracks = 2 +track 1: + total output bytes = 10158 + sample count = 11 + format 0: + id = 1 + containerMimeType = video/x-matroska + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 700000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 1: + time = 667000 + flags = 0 + data = length 794, hash 8126022C + sample 2: + time = 734000 + flags = 0 + data = length 645, hash F08300E5 + sample 3: + time = 900000 + flags = 0 + data = length 2684, hash 727FE378 + sample 4: + time = 834000 + flags = 0 + data = length 787, hash 419A7821 + sample 5: + time = 800000 + flags = 0 + data = length 649, hash 5C159346 + sample 6: + time = 867000 + flags = 0 + data = length 509, hash F912D655 + sample 7: + time = 1034000 + flags = 0 + data = length 1226, hash 29815C21 + sample 8: + time = 967000 + flags = 0 + data = length 898, hash D997AD0A + sample 9: + time = 934000 + flags = 0 + data = length 476, hash A0423645 + sample 10: + time = 1000000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 4180 + sample count = 10 + format 0: + id = 2 + containerMimeType = video/x-matroska + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 791000 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 1: + time = 826000 + flags = 1 + data = length 418, hash DF1A460C + sample 2: + time = 860829 + flags = 1 + data = length 418, hash 2BDB56A + sample 3: + time = 896000 + flags = 1 + data = length 418, hash CA230060 + sample 4: + time = 931000 + flags = 1 + data = length 418, hash D2F19F41 + sample 5: + time = 965000 + flags = 1 + data = length 418, hash AF392D79 + sample 6: + time = 999829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 7: + time = 1035000 + flags = 1 + data = length 418, hash 733A35AE + sample 8: + time = 1069829 + flags = 1 + data = length 418, hash DE46E5D3 + sample 9: + time = 1104000 + flags = 1 + data = length 418, hash 56AB8D37 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_three_seekheads.mkv.3.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_three_seekheads.mkv.3.dump new file mode 100644 index 00000000000..48c34e1b993 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_three_seekheads.mkv.3.dump @@ -0,0 +1,47 @@ +seekMap: + isSeekable = true + duration = 1072000 + getPosition(0) = [[timeUs=67000, position=5576]] + getPosition(1) = [[timeUs=67000, position=5576]] + getPosition(536000) = [[timeUs=534000, position=84155], [timeUs=547000, position=77334]] + getPosition(1072000) = [[timeUs=1035000, position=106570]] +numberOfTracks = 2 +track 1: + total output bytes = 0 + sample count = 0 + format 0: + id = 1 + containerMimeType = video/x-matroska + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B +track 2: + total output bytes = 1254 + sample count = 3 + format 0: + id = 2 + containerMimeType = video/x-matroska + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 1035000 + flags = 1 + data = length 418, hash 733A35AE + sample 1: + time = 1069829 + flags = 1 + data = length 418, hash DE46E5D3 + sample 2: + time = 1104000 + flags = 1 + data = length 418, hash 56AB8D37 +tracksEnded = true From 46f72f3e8ead70c3b6b375d1b7f41e5b15d82329 Mon Sep 17 00:00:00 2001 From: KingLucius Date: Sat, 29 Mar 2025 20:36:03 +0200 Subject: [PATCH 9/9] Update MatroskaExtractor.java --- .../media3/extractor/mkv/MatroskaExtractor.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java index bb936af5b22..806d6430bc7 100644 --- a/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java +++ b/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java @@ -749,6 +749,13 @@ protected void startMasterElement(int id, long contentPosition, long contentSize throw ParserException.createForMalformedContainer( "Multiple Segment elements not supported", /* cause= */ null); } + + // If we have to reparse due to an IO exception we also have to clear the seek head data + visitedSeekHeads.clear(); + pendingSeekHeads.clear(); + seekPositionAfterSeekingForHead = C.INDEX_UNSET; + seekForSeekContent = false; + segmentContentPosition = contentPosition; segmentContentSize = contentSize; break; @@ -846,7 +853,10 @@ protected void endMasterElement(int id) throws ParserException { } else if (seekEntryId == ID_SEEK_HEAD) { // We have a set here to prevent inf recursion, only if this seek head is non // visited we add it. VLC limits this to 10, but this should work equally as well. - if (visitedSeekHeads.add(seekEntryPosition)) { + // + // Note that we also need to check that we do not jump before or to the segment we are on + // as we do not want to clear our visitedSeekHeads + if (visitedSeekHeads.add(seekEntryPosition) && seekEntryPosition > segmentContentPosition) { pendingSeekHeads.add(seekEntryPosition); } } else if (seekEntryId == ID_CUES) {