From 5983951e27e01fc1abdf0029014678577dade857 Mon Sep 17 00:00:00 2001 From: Dmitriy Boltovskiy Date: Wed, 17 Jun 2020 22:44:14 -0400 Subject: [PATCH 1/4] Update of 0296 proposal --- .../Negotiation_of_VSCs.svg | 1 + .../Resolution_Switching.svg | 1 + .../sequence_diagram.png | Bin 124899 -> 0 bytes ...ming-capabilities-during-ignition-cycle.md | 214 +++++++++++++++--- 4 files changed, 179 insertions(+), 37 deletions(-) create mode 100644 assets/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle/Negotiation_of_VSCs.svg create mode 100644 assets/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle/Resolution_Switching.svg delete mode 100644 assets/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle/sequence_diagram.png diff --git a/assets/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle/Negotiation_of_VSCs.svg b/assets/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle/Negotiation_of_VSCs.svg new file mode 100644 index 0000000000..914e74957c --- /dev/null +++ b/assets/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle/Negotiation_of_VSCs.svg @@ -0,0 +1 @@ +AppSDLHMIsdNegotiation of Video Streaming Capabilities between HMI and Mobile ApplicationUI.GetCapabilitiesSUCCESS: UI.GetCapabilities(systemCapabilities=videoStreamingCapability,[additionalVideoStreamingCapabilities])RAIGetSystemCapability(systemCapabilityType=VIDEO_STREAMING,subscribe=true)SUCCESS: GetSystemCapability(systemCapability= videoStreamingCapability,[additionalVideoStreamingCapabilities])OnAppCapabilityUpdated(appCapability=videoStreamingCapability,[additionalVideoStreamingCapabilities])OnAppCapabilityUpdated(appCapability=videoStreamingCapability,[additionalVideoStreamingCapabilities])alt[HMI init]alt[App receives VSCs supported by system]alt[App provides VSCs supported by app] \ No newline at end of file diff --git a/assets/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle/Resolution_Switching.svg b/assets/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle/Resolution_Switching.svg new file mode 100644 index 0000000000..12e1f4bda4 --- /dev/null +++ b/assets/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle/Resolution_Switching.svg @@ -0,0 +1 @@ +AppSDLHMIsdResolution SwitchingStreaming is in progress ...App minimized/StretchedOnSystemCapabilityUpdated(videoStreamingCapability=VideoStreamingCapability)OnSystemCapabilityUpdated(videoStreamingCapability=VideoStreamingCapability)CallBackEndService(VIDEO)EndServiceAck(VIDEO)Navi.StopStreamSUCCESS:Navi.StopStreamOnVideoDataStreaming(false)StartService(VIDEO, new_streaming_params)Navi.SetVideoConfig(new_streaming_params)SUCCESS: Navi.SetVideoConfigStartServiceAck(VIDEO, new_streaming_params)Navi.StartStreamSUCCESS: Navi.StartStreamStreamingData ...(new_streaming_params)StreamingData ...(new_streaming_params)OnVideoDataStreaming(true)opt[HMI notifies App on new VSC]opt[App stops streaming]opt[App starts streaming] \ No newline at end of file diff --git a/assets/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle/sequence_diagram.png b/assets/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle/sequence_diagram.png deleted file mode 100644 index 5bd854464ae45e3ef0875463e706a2e3957332b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 124899 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≧pl_y2Z)w{B~Sq1%FsQDm&GywWkLokGT{8o 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 rq5W80ff)CD# zW`K9pJB_vV<88Wr=o5e;?(BV3e`r(?M-1y}Oq#{_)`&Ba3W0*ae+hLAv1mot2krl8 z%$(=I`e{GP5)N@w3er8&EyJNs0cJ`Wy;Ug03JM4i6~#GZ+>b()G(4BC-uixKx_`#d zLlGGbP{|j7OgULJW`Sq0palJSfcFU`<{HeiH&7YKn`4s2LADrn$VU}lts0RLmpAl{a(OJo{BS(-r0TSmK-}CtnLSLUr|XL)>{YBH}XoN9tE!UHCD+U+B*!cvBsXE zXZaY27Yt2sY^9-G#xg~#WTXCrEBN{Ch4mp@DmfE8bb85GfN7 zJ?P6U3Z>}-nbYby<4z2Y@fiP4b?*UH<<)in9yOXolNh5|u#f;o1zQx1BE^PsP!Z`O zSb~Kjc2tmN5^F#N1v^-d;-T88Qmj}IL1_^Lte~Kx6j2elzYS{iEq8qPj_*J2xQryP zufRFad7i!3o@>sz)DKEWW>auW zFc;2cXgs4Ww;`LiV$^HmbY7GZ1J^*i5e5n`TZ@fPTnUyL)Fv(W%MlzFDZ}@$IlxjD zD?Q|&ZPB@tZ!RmnR6vVl2Ytth6Wf7b$pLlGR&GqvrTJsuKF`mfAn+;4@R+gp67F(F zb;obNZM$Ww7@TqTUGYMem1MXH)`o9(bvrfUn?Ke*PuNJy+;1)n6~n>2OY|y8ooDzb zGL*q-R$INp3xi$TT^K4#ATl%kAlb!*gWTj~9QZN5m_w#Os2cJGphCFlgHwY?}=Oe7Ej`M=LBMo91@E!zy>j_+{k(masCX zdpqIyi8LspgN|nC?;$rCEfKM;h)fzzwhV<&b@=e@YUW{CaZ6^O)vgiSu<>8EA>@D| zw_o)9XC_+zVJ28}T)(+62RTMa;yY`t^{*-&bKQ70k<5aN4y^Ua2>7l}P_j@Ebfd0@ zE?JIoCN!VwfkCJ;^B@57bn7v@L~j2!WB2flK>B!}92CXj^keQ$*d@rT0?cH-t-&AkU$cB*Z;5)H{XQ z-*?$-`uLf{74vca<*twV$U{6{^?-so%p$aih;Me)FhfJ1Y&jx#(zF*74vf3% zzXziZ1WNn;BOU1diCgy;rQj78rE{Xj!2xu>F!b*v*HhU}kxVFt)eWxeHk(arr#5Ed#0|B{>D2Bt-7Bj; ztv|pPA`dR>>~B5Pm|>000Q@xABQRw9NM-vSD^Kb!v?xyJO1f#s%rd-FY)(sv z5u&$zHP&N)yqL_7I?s@%mm5oG!k>JNQ3p4wAx;;#ob^qa_=kXg@K!ha;PMDg9Hew37u=c@w zci4F0oB#?s3sDa#sQ4}C*mRVEnK!l3DTTuh!f;0HqTRKxDF}Q4SDBFIzGB6SR@Ehz zaf^$%$2n29d!bafVH~SiCh#1F)Rnj@N#&~$|Cp>dquhDn^<86e8epJURuHSPu|Bat zuf(fK2VnKHx_Wv6F3ckk&uO(A2R1JTR4B2jg6e2e;9T(M-0rYsDSuxUW3GgH$LT3% zx{HU>d75^s_*v5ZaA&;t^hUkuiUtCloyV$jtRTs zA+#A%gtLf92!LO46$_~X&THVRgmMq40{x8k-NkUq44kV4v8PL< zE-?WGhx9wpTHdKao5814sRSyQ9NrZ7_@Wd5y?>;%Ih^VCkU#SHdJmwlOZ)3Q6zcel z*k(YLHo_Et@2d}NalSa|(uJy&8{Q4il91oL8Y*VzHK2*k$HXoX=2Z%JtP0ov`R7nl zmm9%46*c?Xs^F~_0{$qEC960Q*{VOl|3Q-G2@@p4U;Thv6|rZ}j(JsCl8K1<%QqJu z%{{HZn-P&h8~6OKW5?C)&*O^9J~=<#WQm|%D$4M9&nRs4r&`}d4U=Ox2|CXq03dVq zPUk?5B|RoSWDE-S$>>!W1PAiAqP9&dVW+4G~*=LIJY|maz4k7^`|gllaG&# zoZP#@AY;hr(R(q4n8rAor@SfcDdD4C{Px#7lC#wP(UY)SosZ^oe_W8p6)&j`Wb0^U461Cl1VEJBi#qe1MS5QAX#zLHC^PU^ z%b_X-fIhcEB;Rw7VzFd(RMHhjTL>(Mhh~wMDwl+85{$b@#b2tngt~KF>et_Ww*Y(8 z`sY+h9=E6?oxM$gaeCR`47)htzb6!CI0=DK0`Us1`8V(mIK(WL<5>?dHteRlkCdRD zn6qotDQMR&1FDp>4_2g@k7bcsr9121k(u=yJa{XjeQPlyGBmINMn7nIQv1$w_g=&2lXq0#GEJo~5?7>DG{e{2x-&yB<7K)W;Ds|aU zmuOL7U$lysB!n#3zXKV3hM0aav}1>@Ov5nxV#oIFug2H*vdtPOLmdT6o)vx}us zu=Z7Kz-Z%t#W*{t#N2JX+Uy_d+<80?v)f>sF*4<5f7SaW&Qun37;|mbk;&aC1wN;l zZ$o0zdrjH?)e(1v77vhS+~F>^3B_p7SN>dtU?vo7A~R#qhLbt8!sNtld{9|AjU6}R zw7q|}Q|bQGPw=;&SWFhv>r=aQgiG(N&n(W~*bczf7^4^4mei6qwYuYHHgw4N;pD!o zqz<m2StL_AhsA^6qg7`TdSZU6HY7n*h&5cHmz67Vuu{P_dT^6lsfj(5WRpWArn=<>9%z$}GKom`kj}5S+k*B&crXc@O?NnRw3mfLf_kvq!Y*Sh4 z2W;lOE%`)3a!8>hIPUFKqO1dHVM+ zZY8Oix<(v{21(&XxP*O+D+^-OH_WwaT7?i6k*Tv}7K_oS zP>ii)#QIFVg&6H{y$Vg9;K;uCj+e;Z9K*AV8V7~J>fbI-lXs7XcnvsJHl)J91J&)T zZ@zgL8CQHC_v*e;D>kq_c)gB0Zaay*Yc__S%>4!#*RQMU=d+7Uz-p!o~;CSDM$!b#+xB*IpezwlBNogl%x zP*UGx*u1X<^1@6eNBD1al;8cv+7ev0Vg_ZNGuq%0 zvQ+FSk$)R}`}NoN_yDo7>fPl+>0_W&}Pot?*AK{to2V;Xt4K7|fd9od!{top})cRqE^XWaht2c_A@YJ%`H~aWJ?NGB-U+Q&UGBZwm=z}6Hky{0A-ikXe-Dy5Us4kC9>y}k_7kYrLn4Ms zFE}NNtrgs6yPi9ZJxEl>{^Mn^82WI1=_eM}{mOEU!j!6O>ImrBB-5eJlUKx7;sd7k z;t1z9ZUo_$Mev^n{M>(tDuiad_oU(5-dZ~Z3FFP~8je*kw08Q-m7aFWpZGXX7(p;KdK^1$|>x|XI;d2(ko9~sRUb>v4Ek4r?N)0ow{Eu z5Hh9PmTHU!rg(>b%UnR2n$O(s9I4&vQ^bVC(2Cn#HS4hGRZ*@qL$A#5@}WDFq>G9+ zf~UgUkdbUl0c)wJnGr|5+h$>(!NrpN_XiVna&4uamka`DH``0Jb9j13JlOIBEf3a# zQNieYr#(F%1zOT6;VYWwJbd_2xYfayq6Yw6-$PC*2^Mk@4rt5prT7=Te%Vjy%Q=*M z<|)0zaR>BHpg3xipI<-LJv<*~bBEsLySHr{lN)9}ZT*_ke0JBVq_k zd{M#auP+SUlAKr0nTG|t4JYV*j%KEY2XkxMq+Y&;3088JWj~QL;P2B8rt;WGYOk=B zd@o)T&$O`N6$ZT;EswG=nR(j&oTz;a!QOryD)N5Ku6O=#g}sG@t0DzffGLgRC_LI+ zxs1S(6FoZwmk1bm4cyY3?2tw?d-Kz()XIdI?n(yY7|pfaW1!>ydMJD|n#Z`pF4)0_ zgesiZrn&@jl;nH*LmNPk9P2Vlm>n;Qrd;sof#DWWg(U741vA20(Z|$8)`v3-Y6LU4 zktp^CRyrw5panH`*+>bZXKW-}XEsS;6Ux%EwE ztsf>&H>!S~9ZIDlj_wF=JyIm--JgH?<)*{zK{HPNNuEYj^E=L^B(8kY+W0qFFrgCf z;t$ZzMn+prWh~pgCneU_)_bzcX549dI>3o+@=~K;TPmyk0|M^Xlvw)f2^Nt2sCXm} zzd%6>3yKbn<`_pi1KDt;*kD%p_0G~Z64uZIiUCi@?xpY_o3CpB{+mEkGsD9$FteA0 zON|V}NkBLX-6f?;;Vhh(KGe5{xaO-4$}n_<1`>%3?13P^Sz`idRV1`&(`J7kVe?g= zfJgYp9}iq{ZZeSd(RCM4kYaZxh>FQ#>x(TL4ce}_vLtTZZMr-^gd>z%uIBhq?qbf!VcIjS&R(G^s&`m z1nY30BezF1DZPSyi7!-_qjIcpy)VPtc?#m4Y8~4?Rn|jInke+8l=PQIzjqA9~FchdHG4~Ezf?;q+RkzK#$rL%Qn_~QUu$514S)y7DFMRp48|(OfqO& zU003E=7}=i?z8W`-H`?jbay(22mzE?z9*ZACGsx?1lbR%G47^C6MeeRZFu*l zEJW;eTwkN8IpE=v)E6W+;pY{-IK)Ag=Zv}T?%pLS40!#EF`3Vks*Nf-J`g3P!=IHt zd?*qa(YJ!73DdTK8j8Htm3KCq4Na}@j!h2&PMlEm)S1h%Ev$?Z;izKAwl2NrOW{Sb zsl7#%&2C7z5MCX_+XgT+oSI3?F%43Dt4B(UtqbgE@Sk*cU-=PbHNT#5CKuYtn_-1t^=(^V=VHo zu?HIhIa=#?X*m2qrVk{bNT`qS5;9A1Umwc?gCa`4aJ=OmEQz}DeDCV`w+(eAndlQw zPb(+WBm*S=nq6d`_a`kbh1umwqfdpvgdjI+*JzMM-f&x>^GojB^>N_CCGgIzcNodN>Ra~2Lq zj@!N*Bk)p-QyW%QbbLkq1JxEd_#ZTDF5?Zv#(^cmtOUMkE zOdDTuJC>f zs|KDk(V8Okav+m|#nqGQw#v_!W{j5mXDm>!(QPGarz%Q3FytIN?ccuiU@eY(eMhL| zAxSS(6ZzOcF@4LFW+>Wbi?#!$zijBG{(TEoRrlxufNmh54e5*PxEB8KGXf% zEN;n-cf36l*ka<|jf_9CXqJD;VS_%OUr5^(FrdUw2lmIo$u2f>HOI3qmBstHO^o?| zYofz{KDfGLvR2PjFJC**33}rEy`}NJ+IGxUsQgrq{#;Y2X^L50_Hug8mr9rOe{}w7 z(aF7?r_LE=_`~=Ey#^>B+Sm09vo8ki7@yN+K-zDEEKZmix2mvfb+aICd6xldeyuHz zD9m)%Y;Uq|&iPKh-jBZd;;ZF-#{~W99-rq znU3GHf`Qy^bbPH7ZuuA7O`SR8C#vtabfJc!uJ<}O>N>KZY1-&~EBPv(K5LPn&8+M( zDr04|gZ5YaO7vPozEDt93?nUcE>4;epfTsHgj%liYl>$#y|s)k+>12oL?ZSUfi{{Y z&DM~@%LeS&zdsUx#?^aE`)h08iQjqnVM3@QgN7e19k~*bpu*4V-C@{FN)3t< zrOyhak17XPXFN#>(BOO>G%G27arD;`iNvOrxNT;7FrVQzgLf|b!j20_^FLcKp?vDE zMY4DA-0=vH!!pR+?o+B#Fw*e*CyyPw@>K~eqPnW;gy_`9Lu~ie0+M zC~TMzU|By!3)U<+KKBpRCj=Zby0ExF%PVy4>PXWtH|kd_ zV#hCEuDW;Xp3(W$D;7s}`9Zn&$h&V6HW+w3J#o2)@yJR4a@n!YdnwC_p;YxjfBW5B zwYcRE%1A6{(?mN>XRDll})mbn!GXfU0WNF7cpS3ag4tf zsLoeOuehwf4R`b1W&_QTzABpEBkJQ1rNl_#haV0>eJM^dcj_#kKWS{=X)m;TeJ8zz zE!+hs(Ex328{R61N{hZ%I|srK>y}YycocK-8Xb#YL{fDx#+|jJsOugNL9enm<0zwh z`|Ik?Vl`|*AEsdKG%&%XkB0sBeZna6Pvwu{! z?2v&ysz8_vRMo*<}jnpUNDNw-slvW^CZzy#m9(=>?X#=`~wc>|eg> z49n5tNtcBZO%-w94A$@7WLDit?kO@6s7n1+XKcauqMXX7(w#FVP7(HsAYLC47L%Mm>oDO_5ZMNGUZ<tTZQY zFXA7~G&TSBl0FmEu1}Ed@nZr}xYZkj$N?6gy|TpSlDod6`3c&>dVlHPet0K&>8VAs zSf_j=Ve}Z<-6z~F-X=;-C1w$YQudr%B%_^qS&V#xxwIhP9Fiwe$MN0XzE z8LOGk83qg^CT}uWpTMo2F~Ve2QMWO6#zjw36sEm-v~u>xj~C>VgKS3d8kvj&40|aHojjphj%rJMpp%unAo~0Z6%V@AH@O`AAO+7 zW>blz^&bYBN?fAl387bxY%BTEyZKqOlO@K}2#o9&)~&a~G8Zo5Zh1=cnW3y88Tk8W z_tIPc`%lgwGs*F<_!;d@X1fRn;`O_Z{pX&EMWwvy(?=$;`r@;@FZt`oPZyqKPNz=} ztbcj)g;x!@d66u4aX`HY-?5_$y==d9Q2ZK)Y@9-Ta6!DK8yHVbJ{hp6Y<9! zaRTy!e3ieyQvO)W8sKERwtl5c_kGd)wCBl|cTkjATpVO?Jc|q*{16EUJ+SJ>RBS5Ga;TDq)*;>UY3ca<;- zULypDG`$ObX~j9bXvE(3?c0~fWT0V{#}+O&#nuAde2{G0o+Kn@RueDx_NAX!1muk7 zl42X=`nMO98jYh9cJvs%D#EkwOo?sY2*;Cjb}AyzLGRrSXQMIi%J)oIXi7O0J;PK+ ze)D(<^H62i{1Z{ed+T}H1i;fA($c^E$bDktmYk}}XlRIEW{sWcnR@UZ%eQ4`Nvtjg zZpz{Ku6=y-!kVYcl{MAXC*u%wgV}LmM*XAG(sFUAvDYb;wGDUvrpK@eq8Ag1n7NhJ zF@$;BS8G#l`M(X-YmgE}yxwMq>>vOU{T#6K(0b>V!rH0wQiDO!zsZ6u^9_>sWj;2X zu|=_8`!o z$e=J4qmZo|W;caiy&~|;&>(m`O&N?ix6nfsw+CR&=1>ce?A^}B)X~HBwxiN zoW=II&kUzb$r%)P=eI>YExWcv+2)85H9_o_azW7W0hEq0sog{dNitnLU9^~$TGdPQFCU*A%4cFIvBvj z1*u-Cs75}f+S#{m+xMS9mKd79++H+d|ELv5uQlug z1H;PMCasxHLTZ77gycv&xmLmb(m8ad#BClfYhyW3>A2T4{R^C;8oh)sZoY_XRgIh;11K|2EaVl95^=MOSj(xWRwTH?;ma&aVe=t-?FB1aYyzZwS0m}M#%K3 z{?@A|#7<$))FRWF)%PfNE!*!#TNC%^+r`r$vw7hb@taH+oR)SH(4*eJ|CLSm%9ULJ z7$1GIy0ioG)R5xjWMTFHs zkhyt4zwd*w!ajI|STKG0@{^QhYS4{VWt`f?a#*YAN)Dbaety4By(xD0n5d~=j%_6=_7_UX9}L-G?y*4xH>wysZv3RBWeug* zeE))adklWCbfjomDb1Z!&QlCUXNh)Mn6c*wg}prsMPGy^0}IK*z@#2GI+uQS#QEf) zopPh4Jjij$TV;lLVgCqwXH1eW`)#>VmjX2H%f63~3_=6W<&z>+I z`s6Ab*H}EHw{K?gQg+Ei#qN{FJDpm5`$=X%P5SJ{lQ$-r>>N1be)V~&-rJjgH9J$^ z=~LNyi=FQATwPwZunQR%JYdiC%f3A=pZVut{1x_zmu?aF7g}Ze=WMau7S&xYj=n&C!_ZADAbQLJG2bcaMzB8ysH$H4YS$iRwzQlGxE)}#BP1kRWSV5@vqHTZ zYeMzRaXcY}={-0>v9I%;`01CJD|Dtv5d&1GAK2WriMO6Z(&u3CZz#7+H5og09rckl zi2RD(p2#QjaOhQWl=F(C$$&fvsV$T-2WsNP+^))lxE?<;2X%X8`k=Tq>lct13D!%b z;)DXD(Cm>Ou_K5iN3Rjb5S80^?D%V5q%(tmPE7<_1xESQBdzymG0^g`V&%g=d@EB(lYRcV-dNuqVRg`SC$<)S3j~qEt5Vs_xk>uU% z?LhbBRAJm^LM9R-9~IOSkY8!U8I;`UFQf4xdUVb8;hB#SbwzX2d2xllUhzMfwAuI} z5fjfv%cO7S^vEiIHyF_(ucn4ATeg@?nc@@dRxWp3Qhfqf#JAmtjzKB0B*s#i9)bI= zXS&mt9E8nq%z}=^NeTPttNvZDV?a$eoz$mY3Pu0=G&=})6NFISmeS3Gc(yOUj#>cN z#dtc9;~EFSw1Bem6kfx8<;v4Y=t3cRu-4bb*Gx*I)FYxF>79Nq)bXczn4CI!G6x$` zEtDr&W-e`(lEw`u<41@v<+q`|lcHAH>~%?xdOmYmQNct3W znG>1Ua%y_e1t5&A`SxB%uVbhdxBAG>7 ziB&!*L6jOhrhe%bb1XgCsLerw4n(r;fzV|$)HbL}%vw@LiB%d4wFcFtoO1f|HQ6XXX^&=(!86oAxSU!f8h8FYSAngwun6ipWLB@o4ifL#tgHc}M~}|Rjt?_W^8VgC+?4INATzl4V}}F& zq#c9%=kYB(`~`-}zub#MPAAc~HG1uuJbkDT@(xIqhqbTiqj2l1R_cEP8t)4ZQwDP+DSq|uIqi7;ayL9OZvqOdliv|_!-%fJ- zTjzN z0bzFNJ|w1qeX=pG4S`>Uy`4U3IK>~46m zQO^u|1OrVN5ljakTv}Bs9vy*U9xffJfj5lZky*AjVol-_^XiCWVXl^S1@pVl9pDjP!S3w~t{%~L$c(ibT!eETWHeb-6errkHjJP#2ouH0Mt_~_onw(R;oyK*GC&p(@Ph|JU_J<007f7w3B>hHIW!|RAQ_}tiOI5M zCq#nzWTW1@gQT|V$(O7At#h^2!xk6kCa)q!u#9L5uPz07m~+R!>oxL6x#y(jc6{72 z4=7!=fdfet4r_3Nhg9VCH4(WA*hfJ@!2vGRu_!S{)S1Z+o%`fS{!>rc1rbtgH ze_H%b8-(19-cBQVawJ`JYJe{klneFhALvkmyqzoP76;~O)J}Xci3JG*Z4+}gMH3g* z)zq$4c7byOn0e{dLDzoE8x6Bw{AVt*VdLF z;jS2j&6a(~yKY)7#S*)%C23cSoZ0mN@t?<$_PV$(#d3fch#MVro~;*5iPr?j+nvVAs~Y-}IcQKvE4^jsr}Hx*5INEg2bSWbZ#nM|pYRV{LR`<8?Qh@cJ0AYQsg;EyY9-DGD}j zeZJ~bp0CqtA@9eTG$_XqZc$GH^H)UC5?VaJz`Q{ngyoX13|G2SnpE9GPXDGT!JxA9 zpJ1C;Ho19#BG&iJ%D_WE>6cUJ;DYlpFFxZRaP-pc9Z*|P2f4JvmEICy=sf@mAYDC* zHajB#1N>1(KbgSE%`8WFomK82`>;I=^%cr&i=6Vi$ibs>Na7erm)ny}oS=Q#Ja-ny z!FlZ1w{M_yf|?>_zwZe@Z+#7!feslS->pe)s!tVrfP=G!fh6Tf?bmMH$ioY&ZI5dvTJ6oix6QC$gaK_JmwAw_EP7Sc} z*7%v!ND(=21=@e@?)OL~Cd}2stSBjb?K4mj);Ew$l~(WgL#Tc|Gk3~F5(Gz5ki0ey zI2nos?J)#FRl;Ih74xchm%K z_s!|1WR^H;_?-5T0PBJcBatG#$NbbxGD}n&y!MT7xHW+cnFD8Cu*s+2^}b~8lYNpm zkr)qexx>x(Piy|G^pA=FRDVJfH@i+VQ!0KPT!y%nNX3f{=F+L*n-K?ph^{vO)enK-I zy1#zAtXxP3SyrEfwevItd#MmULCrgD%O{U9SKo1Wl@JK*BR;v%>3akr%}!Xt}vWB_1hW^$=PTcfs9<=O`=N2ut_)&+t+Ah8F1rI z&EvL7B;Gy#>w;xD@zqRkPoAg-hdoE%X5`lr?f9iX2!%ti+k@<3x8n}9l5|`=w#~=; z@V~~(zhAcY*9kB+qBg&Kj3O1LLbKZMo%u(nzfVAyn>IF$Z`NA`Q%mg;g3=#oM{X)+l*#1Omr9u&&kPYS;u|* z>Nl^sc5}4A+_o9}Mwuc7iIU*Kqu>90E6JD#Vv&cRGzeUI`=DXVg-9$l#V-Wn0QljYGzTD# zqSi|L1EK3ChK=AQ2aA_v(+P=0QC&ILiy4#iPu-?CuiYbYH8x<59sZ`bq)&{mnY{G#_cUuF%l=n{pQ~jO-IeoxU2yC2 zxmdtBPRgMqBk@CTzi{tG!l2JSOl`=2z`jqdCpliq_CR)&bKI+GXqZ6@7EooJSu45& zh!a$>&19lt^%yimS}vSI6=}eZfPh1kA=@Pr@yn0woE5gJC*bEvT#4ry&hJoQQv(vo zj>2bo00;{D1l=U2I}#N3Wxf%_EV;daP6DJei!#?LX!~}7)=q@C2 zj@D2P(#JxMS-dzZGkfP9-m*|ts>?+?BYxoJhU{}z!$BAJE=jk}4&2GNRDDz^ z$YB6Y=gpHroA-+=v<)3~#%8eKS^_YQj^tXVF@93yanYW&>ZGscTGyG zw;p6d1hRZ5+=`!!)=%|7J zcFBAE{e`o+huxj{Wx6W05b(M1U~*h49<;}*-D-BVdVk(Ou-beB;zT;QF#=>mz9M9Q zDk4s(((6z^5iC*zp<97=C2vHJu6P0`Q66x+`^%KoM>{&JC((_ zqrzLKxF_JBILs4!LJR18LD^b6i{*s>y2h>OgNfm(<`NvwZZswHIUL(j`-L|d*Wf2j z)9NxZGk*=%W4>av%D<3@O_u`oWpDlZs-UE5^bvbN)1>c!;loYwY6h4!8D#t?U>%ru zo9!TKcWmRAjt!_`aM+avr+Ta#Af*s=KctVy9;JpxMnOf3e>KXFbm*C)TuT$fEV_&? zc)F8Y<-}1LSZZl)tp*t7>>%%bRv5}QjyCwVefwL8gR0f+&aDm$U#cl%$sXCX3%9RnKS5o#))Kb&8^cY?`MFd;oRhfdA zt4d%FW)_b^=gxC81Z_D%ecTEF=6lTBp)qjJoF17k+)&4_P3P%(DTR^wSx1Vs`XPp=}> z)Bc1jm;q0(XTva(4_*AsRB2toYV)5yTd}!?NPU#!U@uFD-&YQ)n;PjmW@0%z?Omh! zU#Np&EO*`L<4>o#Y|bGJS-36!@s+Jh%V!Zr0ivp7t>SoD*KXZr$KW@k2rweMQ%+S} z$uHTDCOVEEFMHdu#bR*iMAamjh>K!hL8Rp-x;PE8iO*6u!3BF5BJUbTv!8xCSCOj8 z!XUSlW4{y<5!Of-O8KP0e<$N=!T2V!Z#I|R4A=Sonh0@}Urc4SRVR8afKd=b++rNE zC-T@R0^ETJ`4de(4R2BIsIoJ?FDwk_t$9Hs`Bm<}@KjPk1T1SZm6Aj4fH>%+iR$b| zEtO!nkuMQtrI5n2R(Sra(Cb1MWF4Hwg6Tz=V^>B|)o)n&E9A6bF+QWFa?8qAGC`n$ zDmx2wW>T#hYR=X;SJHyfRG9TpgJYU7n95N`V(f2@19rXKvv6vCBkNm8-|)HuLi3a# zLx5`p?bMs^0&%lv*!(SGInuDNi2j~JVG6D%Du(lcVeqo4?-CwXu`_i`oXqQo5Cp__ zhU8Y}wxE(*TF2dQ#B$)C>@_XCzG#S&Jhx#meTb)!vI&iA#o*M+uzC-wyRs?&kHUB; z>;cVkBWe2EJ4<%{(Xt1c!Qdl5g9ap#Lu`B}_#-vsD-O|@ES`^ zIQmh&Rx=sMEwtxL;?j z1!=Z*s%P?vWMoTwV!uE)_)Z|Jhubv?G0~WV6PhjtF+dPUcoSm^>e#7Scu2%@r}%R= z9=hC#j;L~?yi$7Wy>L4{paw&C|B)lD#GR8$H_uvgudOD{->w-%E^cD9s`*;g-2BGK z%u0u;sr8`7t9Aa2QH)Bg+lzG%KGuTp8KBAltF=Nd53Ed0`E)-wZpuM-DykTAU}o&1 zUp~s4p;Kt@Y!BxWpcVyPnIv(|S+Ag9g6vFy-kYX^l-l~E40F|A6_nfM~p_C^02q`=J)0g-mz ziupIop?Qj|eno(-SXsVDS(9}P0S!P4JB@WJGemERb{;#{uE|_u?)fjG=R_?o`E^P0 zolS01H)?Fdd~^O0XxC&mRqHh!MzK&#CrS`qEauBB;+h;g%N6RDcz8~8dRz4CaFg)0 zsTiDr(a|TaQ&EBRJsq4ESbsqGUv8b!ySrby(J0zCMAUgq_^5A|W$w|Oj1MvodVy6d zxb{nzFRLSLfUJoc0jlDlr4D@uWdxzrNEr!cP}Ck9Mpssh4upEnqRLQJ3dX)kn}?*J z*=wK02$j>Rc7M+2grn2NG0w^{?qcHH)bBQ4*mbICah=s{dPXhY+81cjlgM63r67?KRRE`N@K%iQZegx8&W?G?(;OlitM7 zridX1SDQ`pe%LsWXNZ8O_1j%3=oVlEcYM=!by44| zE6(l4X@YCvV%gf!E%c|e%~xfNGWn&ks)^=~lL1@51~pKv8{I{Y+cJkJEo`dH-4YtG zW@#@B&+<*@1@6obpr%PU}RH9h;qgc%4^5in|2 zMWxtY<(=iVZ*(G`tWI^8<<*?gpl~}{B~qcz)}?Z%fwMctMlzAKZi%hVsu496a~et| zr(Ua=Fz8Umh-O3KN#>Pnuc=3`u`OB+xgd@Wv@iuFrRca~w{)v~KqO45BOsd#WHy@y z6P%^NrdBjg=m+GZ3B)Y1!^|;(KdE(Ue*{}s15-8v(;t}-n#7#J=%(TjxAFnlllqeY zAKSBHyF}9Nm2|>bGy13n=C2ZX9fk{k{FNsw>AE!w6=qn_wB5t>;oprZ)4>9mWayuW z3L>-{VF_ZAnZ0|z(~E9=DzR=^`)@Mw0J}3O#Y;YuTi?9fhhs~V!jbhGH>wXDIEArr zb0S}raN5biueB5#vw3r=ymag>7iB%d6Jt|Uw|immO%hp0?YLOjXrZD4dYx>F5Z`Xl zLa*^rb@Kb?(V!Fge0A!5DExZcYgeyMhd&oqe{A691*>zDXDi3NJR!I(?=+R~>!j-^ zAra@xqaMw8RxF#3@Fys7n^&tyA0MsMiecGyUeI><_y2%*#gP-j#A>!v5-o-tvyb|M zaArh1H{kckC%<0FbU~U4k0<-r^@~s$`Uze}^v$g{-vW+M=SgtrFgY-6wUzLfq3Q4s zwHA>p9Y?hO>k|YnX&lp>_5_C4w?3{M_53fv+}!O5>W21x&&Viv>$P0rdk)8}`IkNd zR%Me`uiKDyK-hhte*T}mfZ?=hViOC;z|ijBq$%|LiO;*7B%wSI4A(gJ5@NscSS zOG^6O`Mupo`R4y;9%GlSISf%Tg#H%0mH9}2VEpd>O*{U_YLySJf4&o)RCO)zvF7Bk zI)5|qjrZSQ({7SUhH057pi33?S0DZ!TC`~^?Js6;o^?v5HObMA&gn-eS`dEcyO!Vw zG%UeC{&@EvANUvr?mf2=6F27N7k9gAjJYuJA5o$8w>>{GXbW}eqa8cz_C+($h^T>u*`ua879OEe7 + + + + +``` -HMI needs to be notified if a particular application is subscribed on `SystemCapability` updates. +2. Mobile application obtains these VSCs through `GetSystemCapability` request of `VIDEO_STREAMING` type. +Within this request mobile application (SDL library) can also subscribe to receive future VSC updates. -#### HMI API +3. Mobile application provides supported by application VSCs within new `OnAppCapabilityUpdated` notification. ```xml - - - - The type of system capability which app is subscribed/unsubscribed to. - - - - - Defines whether the application is subscribed to get updates for the defined systemCapabilityType. - - - - - ID of the application that relates to this subscription status change. - - + + A notification to inform SDL Core that a specific app capability has changed. + + The app capability that has been updated + + + + + Used as a descriptor of what data to expect in this struct. The corresponding param to this enum should be included and the only other param included. + + + Describes supported capabilities for video streaming + + + + + Enumerations of all available app capability types + + + + + + + + ``` -In case application sends `GetSystemCapability` with the defined `subscribe` parameter, SDL has to send `OnSystemCapabilitySubscription` notification to HMI. +Details on how mobile application selects supported VSCs described in [Mobile libraries changes](0296-Update-video-streaming-capabilities-during-ignition-cycle.md#mobile-libraries-changes-ios-and-android) section. + +4. These VSCs transfered by SDL to HMI within the same new notification. + +![Sequence diagram](../assets/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle/Negotiation_of_VSCs.svg) + +#### Resolution Switching + +In order to notify Mobile application on current VSC HMI may use existing `OnSystemCapabilityUpdated` notification of `VIDEO_STREAMING` type. + +Mobile application will receive such updates if it has been subscribed to them previously. + +There are no changes expected on a protocol level. Just existing service Stop/Start sequences would be utilized. + +![Sequence diagram](../assets/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle/Resolution_Switching.svg) + +### Mobile libraries changes (iOS and Android) + +#### Negotiation of VSCs + +Mobile application (SDL library) has to provide back to HMI filtered list of supported VSCs based on the complete list provided by HMI. + +In order to simplify this mechanism for application developers there is an idea to add VSC constraints into Public API. + +To generalize both Android and iOS platforms these are public methods (or properties) that need to be implemented by application developer: + - min/max `aspectRatio` + - min/max `resolution` + - min `diagonalScreenSize` + +While `diagonalScreenSize` is mandatory, `aspectRatio` and `resolution` are optional. Combining `diagonalScreenSize` with `aspectRatio` or `resolution` the flow of choosing supported VSCs would look in next way: +1. Start iterating through all VSCs provided by HMI +2. If `diagonalScreenSize` provided by HMI is less than developer's constraint, skip this VSC and go to next iteration, otherwise check `aspectRatio` constraint +3. If `aspectRatio` suits constraint provided - add this VSC to supported VCS list, otherwise check `resolution` constraint +4. If `resolution` suits constraint provided - add this VSC to supported VSC list, otherwise go to next iteration + +***Examples:*** + +**iOS** + +In `SDLStreamingMediaConfiguration`: + +```objectivec +@property (strong, nonatomic, nullable) SDLSupportedStreamingRange *supportedLandscapeStreamingRange; +@property (strong, nonatomic, nullable) SDLSupportedStreamingRange *supportedPortraitStreamingRange; + +@interface SDLSupportedStreamingRange : NSObject +// The minimum supported normalized aspect ratio, Min value is 1. (0 matches any ratio) +@property (nonatomic, assign) float minimumAspectRatio; +// The maximum supported normalized aspect ratio, Min value is 1. (0 matches any ratio) +@property (nonatomic, assign) float maximumAspectRatio; +// The minimum supported diagonal screen size in inches, defaults to 0 (0 matches any size) +@property (nonatomic, assign) float minimumDiagonal; +// The minimum resolution to support +@property (nonatomic, assign, nullable) SDLImageResolution *minimumResolution; +// The maximum resolution to support +@property (nonatomic, assign, nullable) SDLImageResolution *maximumResolution; +// Check if the argument is within the [.minimumResolution, .maximumResolution] range +- (BOOL)isImageResolutionInRange:(SDLImageResolution*)imageResolution; +// Check if the argument is within the [.minimumAspectRatio, .maximumAspectRatio] range +- (BOOL)isAspectRatioInRange:(float)aspectRatio; +<……> +@end +``` + +**Android** + +In `VideoStreamManager` add new `startRemoteDisplayStream`: + +```java +public void startRemoteDisplayStream(Context context, Class remoteDisplayClass, + VideoStreamingParameters parameters, final boolean encrypted, SupportedStreamingRange streamingRange) +``` + +In this way, developers will be able to pass constraints related to specific application directly into `SDLManager` +where `SupportedStreamingRange`: + +```java +public class SupportedStreamingRange { + private Resolution minSupportedResolution; + private Resolution maxSupportedResolution; + private Double maxScreenDiagonal; + private AspectRatio aspectRatio; +} +``` +In `SdlRemoteDisplay` implementation by mobile application developers: + +Later, when alternative supported resolutions are retrieved from `HMI`, `SupportedStreamingRange` will be used to unpack data: + +```java +private List getSupportedCapabilities( + Resolution minResolution, + Resolution maxResolution, + Double constraintDiagonalMax, + AspectRatio ratioRange +) +``` + +#### Resolution Switching + +Mobile applications should be able to update the streaming content window to the new VSCs received in `OnSystemCapabilityUpdated`. + +In order to do this application developers would be notified with a callback `onViewResized(width, height)/videoStreamingSizeDidUpdate:(CGSize)displaySize`. It would be called once new data on resolution is retrieved from HMI and internal process in library of proper component change is finished. This callback is passed to implemented by developers classes responsible for markup, where UI reorganization could be handled. + +SDL Manager wouldn't check and validate the VSC HMI sends to app to switch to. + +### HMI Guidelines + +HMI guidelines would need to include the following recommendations how various screen modes have to be handled. + +If the change is a PIP-type change, scale the current video stream to the size you desire without going through this flow. Touches should never be passed to the app. Either a system menu/buttons should be displayed when selected, or the selection should bring the user immediately back to the full-screen app. + +If the change is a split-screen type change (and cannot be handled by scaling the original video), then go through this flow. If the app does not support your custom split-resolution, either don't allow the user to put the app in split screen, or scale the video stream to a size that fits the window and use "black bars" to fill the rest of the window. Touches may be passed to the app in certain limited cases. + + * The window must have a width of at least 3" and a height of at least 3". -#### Sequence diagram + * The touches must be offset for the developer so that 0,0 continues to be in the top-left corner of the app window. If these requirements are not met, either a system menu / buttons should be displayed when selected, or the selection should bring the user immediately back to the full-screen app. -![Sequence diagram](../assets/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle/sequence_diagram.png) +### Old applications behavior -### Mobile libraries changes (Java Suite and iOS) +In case if a particular application doesn't support this feature at all it wouldn't send `OnAppCapabilityUpdated` notification to SDL. +Hence HMI would treat this application as the one which doesn't support dynamic resolution switching and would allow only full-screen mode for it. -Mobile applications should be able to update the streaming content window to the new video streaming capabilities received in `OnSystemCapabilityUpdated`. +Nevertheless [alternatives solution](0296-Update-video-streaming-capabilities-during-ignition-cycle.md#alternatives-considered) may be implemented on HMI to handle such applications. ## Potential downsides @@ -68,10 +206,12 @@ The author was unable to identify any potential downsides. ## Impact on existing code -* SDL core needs to be updated to support described logic and new HMI API. -* Java Suite and iOS proxy libraries would require minimal updates since most of the related functionality have been implemented under [Pixel density and Scale](https://github.com/smartdevicelink/sdl_evolution/blob/master/proposals/0179-pixel-density-and-scale.md) proposal already. -* HMI may need to be updated to handle new `OnSystemCapabilitySubscription` message from SDL. +* SDL core needs to be updated to support described logic and new APIs. +* Java Suite and iOS proxy libraries would require updates related to dynamic resolution switching and new APIs. +* HMI needs to be updated to handle only supported VSCs received from Mobile application. ## Alternatives considered -The author was unable to identify any alternative solutions. +Implement scaling of video frame completely at HMI. This approach has the following drawbacks: + - aspect ratio remains the same + - size of the touchable UI elements cannot be adjusted for a small resolutions and hence the elements become hard to use From b6fcf68e951169e0d3d3ebd919b691f957cfbcf2 Mon Sep 17 00:00:00 2001 From: "Dmytro Boltovskyi (GitHub)" Date: Tue, 23 Jun 2020 14:30:03 -0400 Subject: [PATCH 2/4] Apply suggestions from code review Co-authored-by: theresalech --- ...ming-capabilities-during-ignition-cycle.md | 54 +++++++++---------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle.md b/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle.md index 52f1aa44f9..f6e9bb2205 100644 --- a/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle.md +++ b/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle.md @@ -11,18 +11,18 @@ The main purpose of this proposal is to make it possible to update video streami ## Motivation -Currently there are numerous VSC parameters may be provided by HMI through SDL to Mobile application. -These may also include the ones described in [Pixel density and Scale](https://github.com/smartdevicelink/sdl_evolution/blob/master/proposals/0179-pixel-density-and-scale.md) proposal. -These parameters may be used by Projection or Navigation mobile application to properly adjust video streaming data. -Unfortunately, once these parameters defined during HMI initialization process, they can't be updated until the next ignition cycle. +Currently there are numerous VSC parameters which may be provided by the HMI through SDL Core to Mobile applications. +These may also include the parameters described in the [Pixel density and Scale](https://github.com/smartdevicelink/sdl_evolution/blob/master/proposals/0179-pixel-density-and-scale.md) proposal. +These parameters may be used by projection or navigation mobile applications to properly adjust video streaming data. +Unfortunately, once these parameters are defined during the HMI initialization process, they can't be updated until the next ignition cycle. -This won't allow to implement use cases related to dynamic resolution switching, such as: +This prevents the implementation of use cases related to dynamic resolution switching, such as: - Picture-in-Picture - Preview - Split screen - Collapsed view -The idea of the proposal is to add such possibility into SDL ecosystem. Also offered solution would allow to adjust size of UI elements depends on a current screen mode. +The idea of the proposal is to add such possibilities into the SDL ecosystem. The offered solution also allows adjusting the size of UI elements depending on a current screen mode. ## Proposed solution @@ -30,9 +30,9 @@ The idea of the proposal is to add such possibility into SDL ecosystem. Also off #### Negotiation of VSCs -Available and supported VSCs needs to be negotiated between HMI and Mobile application. +Available and supported VSCs need to be negotiated between the HMI and mobile application. -1. HMI provides list of supported by system VSCs within new `additionalVideoStreamingCapabilities` parameter of `VideoStreamingCapability` struct in `UI.GetCapabilities` response: +1. HMI provides a list of supported by system VSCs within the new `additionalVideoStreamingCapabilities` parameter of `VideoStreamingCapability` struct in `UI.GetCapabilities` response: ```xml @@ -76,19 +76,19 @@ Within this request mobile application (SDL library) can also subscribe to recei ``` -Details on how mobile application selects supported VSCs described in [Mobile libraries changes](0296-Update-video-streaming-capabilities-during-ignition-cycle.md#mobile-libraries-changes-ios-and-android) section. +Details on how a mobile application selects supported VSCs is described in the [Mobile libraries changes](0296-Update-video-streaming-capabilities-during-ignition-cycle.md#mobile-libraries-changes-ios-and-android) section. -4. These VSCs transfered by SDL to HMI within the same new notification. +4. These VSCs are transferred by SDL Core to the HMI within the same new notification. ![Sequence diagram](../assets/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle/Negotiation_of_VSCs.svg) #### Resolution Switching -In order to notify Mobile application on current VSC HMI may use existing `OnSystemCapabilityUpdated` notification of `VIDEO_STREAMING` type. +In order to notify a mobile application of the current VSC, the HMI may use existing `OnSystemCapabilityUpdated` notification of `VIDEO_STREAMING` type. Mobile application will receive such updates if it has been subscribed to them previously. -There are no changes expected on a protocol level. Just existing service Stop/Start sequences would be utilized. +There are no changes expected on a protocol level. Only the existing service Stop/Start sequences would be utilized. ![Sequence diagram](../assets/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle/Resolution_Switching.svg) @@ -96,16 +96,16 @@ There are no changes expected on a protocol level. Just existing service Stop/St #### Negotiation of VSCs -Mobile application (SDL library) has to provide back to HMI filtered list of supported VSCs based on the complete list provided by HMI. +Mobile application (SDL library) has to provide back to the HMI filtered list of supported VSCs based on the complete list provided by the HMI. -In order to simplify this mechanism for application developers there is an idea to add VSC constraints into Public API. +In order to simplify this mechanism for application developers, there is an idea to add VSC constraints into the Public API. -To generalize both Android and iOS platforms these are public methods (or properties) that need to be implemented by application developer: +To generalize both Android and iOS platforms, these are the public methods (or properties) that need to be implemented by an application developer: - min/max `aspectRatio` - min/max `resolution` - min `diagonalScreenSize` -While `diagonalScreenSize` is mandatory, `aspectRatio` and `resolution` are optional. Combining `diagonalScreenSize` with `aspectRatio` or `resolution` the flow of choosing supported VSCs would look in next way: +While `diagonalScreenSize` is mandatory, `aspectRatio` and `resolution` are optional. Combining `diagonalScreenSize` with `aspectRatio` or `resolution`, the flow of choosing supported VSCs would look like the following: 1. Start iterating through all VSCs provided by HMI 2. If `diagonalScreenSize` provided by HMI is less than developer's constraint, skip this VSC and go to next iteration, otherwise check `aspectRatio` constraint 3. If `aspectRatio` suits constraint provided - add this VSC to supported VCS list, otherwise check `resolution` constraint @@ -177,13 +177,13 @@ private List getSupportedCapabilities( Mobile applications should be able to update the streaming content window to the new VSCs received in `OnSystemCapabilityUpdated`. -In order to do this application developers would be notified with a callback `onViewResized(width, height)/videoStreamingSizeDidUpdate:(CGSize)displaySize`. It would be called once new data on resolution is retrieved from HMI and internal process in library of proper component change is finished. This callback is passed to implemented by developers classes responsible for markup, where UI reorganization could be handled. +In order to do this, application developers would be notified with a callback `onViewResized(width, height)/videoStreamingSizeDidUpdate:(CGSize)displaySize`. It would be called once new data on resolution is retrieved from the HMI and the internal process in the app library of proper component change is finished. This callback is passed to implemented by developers classes responsible for markup, where UI reorganization could be handled. -SDL Manager wouldn't check and validate the VSC HMI sends to app to switch to. +SDL Manager wouldn't check and validate the VSC that the HMI sends to the app to switch to. -### HMI Guidelines +### HMI Integration Guidelines -HMI guidelines would need to include the following recommendations how various screen modes have to be handled. +The HMI Integration Guidelines would need to include the following recommendations for how various screen modes have to be handled. If the change is a PIP-type change, scale the current video stream to the size you desire without going through this flow. Touches should never be passed to the app. Either a system menu/buttons should be displayed when selected, or the selection should bring the user immediately back to the full-screen app. @@ -195,8 +195,8 @@ If the change is a split-screen type change (and cannot be handled by scaling th ### Old applications behavior -In case if a particular application doesn't support this feature at all it wouldn't send `OnAppCapabilityUpdated` notification to SDL. -Hence HMI would treat this application as the one which doesn't support dynamic resolution switching and would allow only full-screen mode for it. +In the case where a particular application doesn't support this feature at all, it wouldn't send `OnAppCapabilityUpdated` notification to SDL Core. +Hence the HMI would treat this application as one which doesn't support dynamic resolution switching and would allow only full-screen mode for it. Nevertheless [alternatives solution](0296-Update-video-streaming-capabilities-during-ignition-cycle.md#alternatives-considered) may be implemented on HMI to handle such applications. @@ -206,12 +206,12 @@ The author was unable to identify any potential downsides. ## Impact on existing code -* SDL core needs to be updated to support described logic and new APIs. -* Java Suite and iOS proxy libraries would require updates related to dynamic resolution switching and new APIs. -* HMI needs to be updated to handle only supported VSCs received from Mobile application. +* SDL Core needs to be updated to support described logic and new APIs. +* Java Suite and iOS app libraries would require updates related to dynamic resolution switching and new APIs. +* HMI needs to be updated to handle only supported VSCs received from mobile applications. ## Alternatives considered -Implement scaling of video frame completely at HMI. This approach has the following drawbacks: +Implement scaling of video frame completely on the HMI. This approach has the following drawbacks: - aspect ratio remains the same - - size of the touchable UI elements cannot be adjusted for a small resolutions and hence the elements become hard to use + - size of the touchable UI elements cannot be adjusted for small resolutions and hence the elements become hard to use From 273ec9fb5d5321b13ad69fe121fb3e13de9f2bbe Mon Sep 17 00:00:00 2001 From: "Dmytro Boltovskyi (GitHub)" Date: Tue, 23 Jun 2020 16:22:22 -0400 Subject: [PATCH 3/4] Apply suggestions from code review Co-authored-by: theresalech --- ...date-video-streaming-capabilities-during-ignition-cycle.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle.md b/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle.md index f6e9bb2205..c60cc24043 100644 --- a/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle.md +++ b/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle.md @@ -11,7 +11,7 @@ The main purpose of this proposal is to make it possible to update video streami ## Motivation -Currently there are numerous VSC parameters which may be provided by the HMI through SDL Core to Mobile applications. +Currently there are numerous VSC parameters which may be provided by the HMI through SDL Core to mobile applications. These may also include the parameters described in the [Pixel density and Scale](https://github.com/smartdevicelink/sdl_evolution/blob/master/proposals/0179-pixel-density-and-scale.md) proposal. These parameters may be used by projection or navigation mobile applications to properly adjust video streaming data. Unfortunately, once these parameters are defined during the HMI initialization process, they can't be updated until the next ignition cycle. @@ -76,7 +76,7 @@ Within this request mobile application (SDL library) can also subscribe to recei ``` -Details on how a mobile application selects supported VSCs is described in the [Mobile libraries changes](0296-Update-video-streaming-capabilities-during-ignition-cycle.md#mobile-libraries-changes-ios-and-android) section. +Details on how a mobile application selects supported VSCs are described in the [Mobile libraries changes](0296-Update-video-streaming-capabilities-during-ignition-cycle.md#mobile-libraries-changes-ios-and-android) section. 4. These VSCs are transferred by SDL Core to the HMI within the same new notification. From 0fc100bf1f0528a41b311f622530863af1164e86 Mon Sep 17 00:00:00 2001 From: Dmitriy Boltovskiy Date: Tue, 23 Jun 2020 16:23:40 -0400 Subject: [PATCH 4/4] Add AppVideoStreamingCapability struct --- ...e-video-streaming-capabilities-during-ignition-cycle.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle.md b/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle.md index c60cc24043..b72b2deb4e 100644 --- a/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle.md +++ b/proposals/0296-Update-video-streaming-capabilities-during-ignition-cycle.md @@ -64,6 +64,13 @@ Within this request mobile application (SDL library) can also subscribe to recei + + Contains information about this app's video streaming capabilities. + + Supported streaming resolutions + + + Enumerations of all available app capability types