Steam Stream – A short rundown

So today I got the invite to the Steam Streaming beta and I spent a few minutes testing it and it works reasonably well.
I don’t plan to talk here about what it is,how good it works, what it can or can’t do or anything that everybody that got invited tried and said anyway.After all, all it does is recording the screen and sending it over network + input commands.
I planned or more exactly I plan on writing a small client or maybe a libretro core for it.
So the first step is to take a look at the protocol 🙂 so let’s start.
So I started a little session and took at the traffic with wireshark.First it seems to negotiate the session through tcp and the rest of the protocol is (like one could guess) entirely in udp.
The tcp traffic format seems to have a variable length of the data stream but it always seems to start with 0x17030300.
The udp streams first package looks like:
Also it should be noted that it used the vlc libraries to encode the video.
At least the stream tells me:
x264 - core 138 - H.264/MPEG-4 AVC codec - Copyright 2003-2013 - - options: cabac=1 ref=1 deblock=1:0:0 analyse=0x1:0x1 me=dia subme=1 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=2 lookahead_threads=2 sliced_threads=1 slices=2 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=1 keyint=infinite keyint_min=536870913 scenecut=40 intra_refresh=0 rc_lookahead=0 rc=crf mbtree=0 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=250 vbv_bufsize=272 crf_max=0.0 nal_hrd=none crop_rect=0,0,0,12 ip_ratio=1.40 aq=1:1.00
The first part of the udp traffic establishes some basic informations like information of the client os (gpu informations,cpu informations and os type) and some things like encoding information and Game infos.
Later on I will try to actually understand the protocol, but that has to do for a quick look.