# Steam In-home Streaming, Komprimierungsartefakte, "Blockige" Grafik bei bewegten Szenen



## Cinnayum (9. September 2016)

Ich versuche (wieder einmal) zu Hause über In-Home Streaming erträgliche Bildqualität über Steam IHS hinzubekommen.

Es gibt tonnenweise Kommentare und Beiträge in allen möglichen Foren und über google zu finden.
Aber nichts davon ist wirklich handfest.

Das Setup ist erstmal wie folgt:

Host:
i7-3770K auf 4GHz
16GB DDR3-1866 RAM (2x8)
MSI PE GTX 670 (2 GB)
MX200  für OS und die Testspiele
Win 7 Ultimate 64 Bit (DX 11)

Client:
i2-2330m (Intel HD 3000)
16GB DDR3-1333 RAM (2x8)
GTX 555m (1GB)
BS auf HDD
Win 7 Home Pro 64 Bit (DX 11)

Verbunden wie folgt:

```
Router (Fritz!Box 7190 = Speedport W 701v) -> DLAN Adapter -> Stromnetz -> DLAN-Adapter -> Host
                                                                   |
                                                                   v
                                                              DLAN-Adapter -> Client
```

Der untere Strang kann auch per WLAN laufen, ist aber für das Problem unerheblich.
Die DLAN-Adapter sind Devolo dLAN AVsmart+ 200 MBit/s, alle baugleich.

Encode Settings auf dem Host:
[X] Auflösung anpassen
[X] Hardwareencoding aktivieren
       [X] Hardwareencoding auf Nvidia-GPU aktivieren
               [X] NVFBC-Aufnahmemodus bevorzugen
       [   ] Hardwareencoding auf AMD-GPU aktivieren
       [   ] Hardwareencoding auf Intel-GPU aktivieren
Anzahl der Software-Encodingprozesse
      <Automatisch> oder <8>
[X] Netzwerkverkehr priorisieren

Decode Settings auf dem Client:
(   ) Ausgeglichen oder (   ) Schön
Erweitert:
Bandbreite drosseln:
  <unbegrenzt> oder <automatisch> oder .ini Tweak <100.000 kbit/s>
Auflösung begrenzen:
  <Bildschirmauflösung> oder <1280x720>
Lautsprecherkonfiguration:
  <automatisch erkennen (Stereo)>
[X] Hardwaredecoding aktivieren
[X] Performanceinformationen anzeigen

Was nun passiert, ist:
Alle Spiele starten ordentlich und übertragen ein Bild gemäß der Auflösungseinstellungen, die getroffen wurden.
Per F6 zeigen die Infos eine geschätzte Bandbreite von höchstens 3 Mbps an (ist ja unterhalb Full-HD, das viel diskutierte Bandbreitenproblem würde ich eigentlich ausschließen)
Encoder ist entsprechend NVEnc h.264 DX 9 / 11 oder die passende software-Lib mit 4 oder 8 Threads
Die Latenzen sind:
Netzwerk ca. 20-35ms
Bildschirm ca. 40ms
(weiteres editiere ich nach, wenn ichs zuhause wieder laufen lasse)
60FPS werden stabil erreicht und ohne Ruckeln / Aussetzer übertragen
Die Eingaben reagieren gut und "schießen auf stationäre Ziele" funktioniert gut.

*Aber, das Bild ist sichtbar in Quadrate unterteilt, die bei schneller Bewegung oder in farblich gleichförmigen Flächen deutliche Komprimierungseffekte zeigen.*
Versucht habe ich alle Borderlands Teile, Saints Row, Tomb Raider 2013, WoW (als Fremd-App hinzugefügt).
Wenn die Kamera stillhält, verschwinden diese Quadrate und das Bild erhält beinahe eine 1:1-Qualität vom Original.
Mit dem vlc-Player als "Fremdspiel" kann ich in anständiger Qualität beliebige HD-Filme streamen. Diese Quadrate tauchen hier (scheinbar) nicht auf.

Einstellungen, die sich als unerheblich erwiesen haben sind:
- Soft- oder Hardwareencoding (auch Nvidia NVFBC bzw. NVIBC) (in Software läuft es mit etwas schlechterer Latenz auch auf 60FPS)
- Vollbild / Fenster-Modus im Spiel
- Schnell / Ausgeglichen / Schön macht die Quadrate nur größer / kleiner, der Effekt bleibt da
- dedizierte Decodierung auf GTX 555m oder Intel GPU erzwingen

Was noch aussteht:
- Software-Decodierung versuchen
- Die PCs direkt mit dem Router bzw. per Switch verbinden, um die Latenz zu verringern
- Framelimiter auf 30 FPS

Ich vermute jedoch, dass das Bild einfach in dieser grausigen Qualität von Steam gesteuert übertragen wird.
Weiß jemand, wie man hier Abhilfe schaffen, kann, so dass man auch Shooter spielen kann, ohne dass das Fadenkreuz in einer Pixelsuppe verschwindet?


----------



## Malkolm (9. September 2016)

Einfach mit mehr Bandbreite. Die von dir beschriebenen Artefakte habe ich auch wenn der Client im WLAN hängt. Früher mit "nur" n-WLAN war es noch schlimmer (weniger fps, mehr artefakte) als dann irgendwann mit ac-WLAN. Eine wirklich saubere Übertragung bei hohen Auflösungen und hohen fps habe ich nur mit dem guten alten LANKabel.


----------



## norse (9. September 2016)

Dem stimme ich voll und ganz zu - das in Home Streaming braucht einfach Bandbreite. mit GBit LAN läuft es wunderbar, über WLAN oder DLAN wird das ganze dann schwierig.


----------



## Cinnayum (11. September 2016)

Ich habe nun erstmal alle Treiber nochmal neu drauf gemacht und dabei auf dem Host Nvidia Geforce Experience mit installiert.
Angeblich hat bei jemandem aus den vielfältigen Beiträgen im Steam-Forum das geholfen.

Nun steht in der Tat beim Host ein leicht abgeänderter Renderer.
Irgendwas von wegen "Game threaded DVD9 NV12 enc".

Jetzt kann ich immerhin auf "balanced" mit ca. 14 Mbps Traffic ohne die störende "verkästelung" des Bildes spielen.
DLAN und WLAN (wenn auch mit schlechterem Ping) geht beides.
Weiß jemand eine einfache Möglichkeit, um die verfügbare Bandbreite zwischen Client und Host zu messen?

Auf "schön" stottert der Sound und es gibt soviele Paketverluste, dass das Bild einfriert und der Stream irgendwann abbricht.
Es wäre auch schön, wenn jemand in 1366x768 @ 60 FPS messen könnte (mit dem F6-Overlay), wieviel tatsächlichen Datenverkehr das erzeugt. (in bewegten Szenen)
In einer Abschätzung müsste ja das doppelte an Bandbreite wie für WXGA fast ausreichen und ich wundere mich, dass das Stromnetz dafür nicht reicht.

Jetzt muss ich mir nur noch eine Methode überlegen, wie ich zwischen den 3 Stellen eine direkte LAN-Verbindung hinbekomme. (ist nicht meine Wohnung, Durchbrüche fallen also aus *hust*)


----------



## Research (12. September 2016)

Irgend ein Linux ISO per Torrent zwischen deinen PCs.


----------

