Most of the fields in the Stream Properties Object will come from whatever container you're taking the stream from. From the rockbox ASF parser:
read_uint16le(fd, &wfx->codec_id);
read_uint16le(fd, &wfx->channels);
read_uint32le(fd, &wfx->rate);
read_uint32le(fd, &wfx->bitrate);
wfx->bitrate *= 8;
read_uint16le(fd, &wfx->blockalign);
read_uint16le(fd, &wfx->bitspersample);
read_uint16le(fd, &wfx->datalen);
....
} else if (wfx->codec_id == ASF_CODEC_ID_WMAV2) {
read(fd, wfx->data, 6);
lseek(fd,current.size - 24 - 72 - 6,SEEK_CUR);
wfx->audiostream = flags&0x7f;
}
...
extradata = wfx->data;
if (s->version == 1 && wfx->datalen >= 4) {
flags2 = extradata[2] | (extradata[3] << 8);
}else if (s->version == 2 && wfx->datalen >= 6){
flags2 = extradata[4] | (extradata[5] << 8);
}
s->use_exp_vlc = flags2 & 0x0001;
s->use_bit_reservoir = flags2 & 0x0002;
s->use_variable_block_len = flags2 & 0x0004;
So basically the fields in that struct are things like sample rate, transform size and any misc features the codec needs enabled (like variable length coding for exponents). The asf view tool gives you some hints (sample rate, etc) but won't tell you about block lengths and such (I think it lumps those into the "extra data" field of the stream properties object).