From 322747e49fef13150310397b998aff13e6eb0e0b Mon Sep 17 00:00:00 2001 From: Maxim Devaev Date: Sat, 4 Apr 2026 01:06:39 +0300 Subject: [PATCH] update --- docs/latency.md | 2 ++ docs/latency/pipeline_latency.webp | Bin 0 -> 18704 bytes 2 files changed, 2 insertions(+) create mode 100644 docs/latency/pipeline_latency.webp diff --git a/docs/latency.md b/docs/latency.md index 6de6d6a7..8731f25f 100644 --- a/docs/latency.md +++ b/docs/latency.md @@ -35,6 +35,8 @@ Next, we'll explain how we arrived at these numbers and how you can replicate th PiKVM works with the physical world: it captures video from a cable, encodes it, and sends it to your browser over a network. +![Pipeline Latency](latency/pipeline_latency.webp) + ``` +--= Host =--+ +-------= PiKVM =-------+ +---= Browser =---+ | | HDMI | | | | diff --git a/docs/latency/pipeline_latency.webp b/docs/latency/pipeline_latency.webp new file mode 100644 index 0000000000000000000000000000000000000000..a3117b81c47becefb9a8862942f46327b0e89fd1 GIT binary patch literal 18704 zcmce-Ly#^^u!h;TZQHi3)3&YCwr$(CZFirxZQHiK`RCr5h}q0;VxC1t)v7Y0@~z0K zcuQGYLIO$}2uMR*L{VLli|AVl2uP6)I2V{k2;vt=fEg=FjD)xlY0{OA2o$WP-R0cc zuMxaCPxQC-9rzAc*qXIE?7}_&oNuOfcFljEci^y|CXWm7_b2&Lbi4jl!H_VlfBP%I zFWIljHQ-131^D~vEB{)d3G==GJii}6;;+=d?j7K-4-maPxdc9!{DKDnHY|P=Zr%pg zZrpF(2Q;qI0eia&0f<6~fFJuGf?tJqi!ZYyi)X@-yKBJ*e%Ei4*kB_$$pISm~frn_5J2E|2Y3` zZacn#aRd+rko=wdJovEyFn;7a`yUGuf2*-EKKY;X3-#K4NWL=O8=MLb`#b#%eR99v z-Rwp6_XEiNynlkf%a7;Y?Hdq}2qy&_0Pa6|zY~D3pZbmb1Hr@}|1W*tzu)~|2G9L% zfXluC|0I820P4@ukN>y*10g{0%8%A>=9lnm?<4-D|4wAMx*kH~lAq`v70S4?yzf-&*-~`8U9+f2IH3Anzy((*6Gzn6HorRFhIT7{bQG z`(zU_d#Qt8VZQfnoJF?HHM_&;9P`9oRS&r`4;w&5{luEV!6~5dxnEQCZ~!Br5-rs) ziF=L4`r&9?;X6Onypow=xrqoo{Q{IV_Z?r||Itn{__F2VtZ82>7pu&u`-hd474<=I zvnQ)ES3f9BJ5g88Jl(3omY3vzz~65EBO8eS=K2Q&h00$M%^{Udfhr(V?lFQneOI~of%qMg2MAuIBbQf&^uv2Hc%>kH=g zwTlhwvo-jlCX}l^t`Gue72p+vga**o2%n_6WI|T|Mk%|ArrJ~PMlwEchQI~;@C`yA z@Dg`2PZB=~QoDD|R~NZ@YBQ5vx1@Zf3$T@?%}N?R9Y)->-CjpDWu$udK9O8>R-(yq z>5N{?wcY-oT(hFE?9<46zxh8Ny1Tou!9}eeR*ipZC&)IRunECcmET?P(6Mjo44qQZ z@}F|a&2YaKXn5Nel^?X>8DHvO^yzo@3VwRS(QLVU7r!?jad^xqDO5Y|tXJB1+=Ekk zpkC8wD5nAc%nT48=N=+GtHuz0I^Q&7iNoKaYT9U29#KG+*sw#AoAm7!tNh;;Yx-`4 zRYLTwJ{x3ez25r_$uG zIsde=$JrZ7QJ@?D>`VKk066pSN;zw0MKJ?Ta)N;uTsC#w*ncjyw;gKQy}iA|IDqgN z{F{NvNO7XX{N7_@IF^ne72~L6v-BSN+;Zy*`^z}3pf}`oFwb42#^vnJj0kNzje@ZR~g7^QOw7V(P&DYRy6yBHJ^!d1z)NYGt7`OQ6alh~@W@7~AM$72T z0<&^OxWE=O%HP(2Wzhr5%O7V}ma@24iQI%!;%=iL{|@ng)0x=pGhLvyM^Qu?kcNnxsLmV54K=Mc}U|n&t0OEqX{Rh39ifBC8&!(m6TI&yhKzltqUskF(Zgpq-=@bV`ci(-b1%5f7;TLj z?Ed#1f3bZsIpuLo3%A4}a-8V2FSGR|`*cB;+mPKY@04w=ifSBO@bdOqseOxcBeestNZ*cU-_7spsKbZ@{C3h`&+2d+Pmt&@s(&3UfVnfP1u-wxm2-cXe@{qp4K3&Fcq zk2Lo*D22Tu`C`?5HU=h>TTHb0M}CMH{Zd zg-%at79U|x(9gF6>;(nIKCMr*748jRyH3qzS&24<7O@U&8bt?Am=-4_D21)m|Cy5W z(G;@}86maS5+mM4=*aTXH>ui=2GeL>bC3_Y!&qON*yVHdB9FUZ;(&ch9+5kAW!KJk zwy)%!z6>&M+sbS*wk*db`DVo}2}8vi-F|GC%qN56nwIrLlVYkpBYG+t3NtsG&Z38* znTyVnL$s%ff9;S#;T_G<>=*n}Pfr&r06p$~W|t3NPxOR6JQHe<0cEII&S*U#d9@lU z?k+MI5^ZQ6)H*W5$aXjfo*qek@oAvR5W*v05ANvU@yf`5zY2#Cn1lY0}$<_TMuzGmYEx_pIhxqBwkebx~a-Xp?#D zNmT!*%LHc-@J+1PB-S(>YpbRsjALXdeKl6R!eE5Ng$U(0kV%0A5H3f8Zj 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 RAk|?!0000000000005qD#Bl%s literal 0 HcmV?d00001