Eli ohjausdatalle.
Kerro mitä helvetin tekemistä pakkaamattomalla kuvalla on tämän kanssa?
Se, että se on se datamäärä, mikä pitää siirtää, ja tuollaisen datamäärän pakkaaminen ei ole mikään triviaali juttu.
Tämän olisi pitänyt selvitä, jos olisit malttanut lukea viestini loppuun sen sijaan että alkaisit heti huutamaan tajumatta yhtään, mistä on kyse.
Google on kertonut ettei pakkaus ole "ihan perinteinen", vaan siellä serverin päässä on tehty uudenlaisia rautatason muutoksia/parannuksia.
Míkään rauta ei ratko viiveitä, jotka tulee siitä, että algoritmin on pakko odotella seuraavaa framea, ennen kuin edellinen voidaan lähettää.
ja videopakkauksen laatu on pakosti selvästi huonompi, jos se ei voi käyttää B-frameja.
Googlen kaverit ovat antaneet jo ymmärtää että päästäisiin alle 100ms viiveisiin.
... mutta reilut 20 ms on se raja oman hiirenliikkeen ja kuvan päivityksen välillä, minkä jälkeen ihminen alkaa huomaamaan sen häiritsevänä.
"alle 100ms" on kaukana riittävästä mihinkään oikeasti nopeatemposiin peleihin.
Tai parempaa rautatason pakkausta...
Ei auta.
Videoformaatti ei edelleenkään ole "pitkän viiveen" aiheuttaja. Sen viiveen aiheuttaa käytetty pakkausalgoritmi ja laite.
Se videokodekki nimenomaan helposti on se viiveen aiheuttaja, kun B-framejen takia on pakko vastaanottaa seuraavat framet ennen kuin edellisiä voidaan näyttää.
Väännetäänpä nyt rautalangasta:
Esimerkkitapaus, että videonpakkausformaatissa on käytössä edes YKSI B-frame.
Rendataan kuva 0. Tehdään siitä I-frame.
Rendataan kuva 1. Tehdään siitä framen 0 perusteella P-frame.
Rendataaan kuva 2. Halutaan tehdä siitä B-frame. Ei ole siihen tarvittavaa dataa. Odotellaan.
Rendataan kuva 3. Tehdään siitä I-frame. Nyt meillä on data kuvan 2 B-framen tekemiseen. Tehdään kuvan 2 B-frame.
Tässä siis meille tuli yhden framen verran ylimääräistä latenssia siitä, että kuvaa 2 pystyttiin alkamaan pakkaamaan vasta, kun kuva 3 oli jo rendattu.
Sitten kun sama puretaan:
Vastaanotetaan kuvan 0 data. Puretaan siitä I-frame.
Vastaanotetaan kuvan 1 data. Puretraan siitä P-frame.
Vastaanotetaan kuvan 2 data. Meillä ole kaikkea sen purkamiseen tarvittavaa dataa.
Vastaanotetaan kuvan 3 data. Puretaan siitä I-frame. Puretaan sen perusteella kuvan 2 B-frame.
Tässä tulee toisen framen verran latenssia. (käytännössä vielä vähän enemmän, koska framen 3 data piti purkaa ennen kuin framen 2 datan purkamisen tiettyjä vaiheita voi edes aloittaa)
Se, että siellä on käytössä edes YKSI B-frame ennen I-framea tarkoittaa kokonaisuudessaan KAHDEN framen eli 33.33 ms viivettä
pelkästään puskuroinneista, kun lasketaan sekä pakkaamiseen että purkuun menevä aika.
Pitää siis käytännössä valita kuvanlaadultaan huonompi videopakkausformaatti, jossa ei ole B-frameja, jotta ei tule pelkästään tuosta tuota 33.33 ms viivettä.
Ja pakkauksen loppupäänä on käytännössä aina joku häviöton pakkaus, jolla lopullinen (jo kvantisoitu, häviön kärsinyt) bittivirta tiivistetään vielä pienemmäksi. Nämä häviöttömät pakkausalgoritmit rinnakkaistuvat aika huonosti raudalla tai GPUlla ajettaviksi, ne ovat luonteeltaan hyvin sarjallisia, tosin toki data voidaan jakaa blokkeihin ja pakata blokit rinnakkain, ja siten saada jonkin verran rinnakkaisuutta sinne, mutta se blokeittain pakkaaminen tarkoittaa taas myös helposti lisää viivettä puskurointiin, kun dataa verkon yli kulkee jatkuvana streamina mutta kuvat valmistuu ja rendataan frame kerrallaan.
Jos tässä on kerran low-latency optimoitu rautatason pakkaus niin miksi ihmeessä se viive ei voisi kelvata?
Koska se rauta ei ole aikakone.
Ihmettelen vain että miten täälläkin porukka pelailee nvidia shieldiin striimaten ja kehuu helpoksi ja hyväksi. Verkon yli sekin menee, eikä todellakaan viiveetöntä. Tässä lisätään viivettä hyvin vähän vs. shield streamaus.
Laitatko jotain lähdettä näihin kehuihin?
Ja ei, tuo ei tule toimimaan esports kisoissa joissa pelataan CS:ää maailmanmestaruudesta. Ei toimi edes suomenmestaruudesta kisatessa.
Löytyy silti aika monta peliä jotka eivät ole esports fps hakkaamista. Esimerkiksi sellaisia pelejä missä siitä säteenseurannastakin on jotain iloa kun maisemat ovat kauniita. Silloin pieni viive ei haittaa yhtään mitään 95% käyttäjistä. Loppu 5% voi sitten ostaa sen 2000€ pelikoneen 2080Ti:llä ja 244Hz 4K monitorilla.
Sanoin jo aiemmassa viestissäni(oleellinen boldattu)
hkultala sanoi:
ja sitten kärsitään se viive (joka on liikaa monille nopeatempoisille peleille, mutta voi olla kelvollinen hidastempoisille peleille).
Sinä sen sijaan rupesti tunkemaan tätä pilvipelaamista joka paikkaan vertaamalla verkkosi viivettä monitorisi viiveeseen ja ignooraten sen ongelmat nopeatempoisissakin peleissä.