Regarding thin_committed I still don't see why you need it, why existing field presentation.thin is not enough?
Well, the idea is that the rate itself only gets "committed" once the MESourceRateChanged event is received and the rate is forwarded to the clock (session_complete_rate_change), so without delaying the change to thin equivalently, there could be a point in time where GetRate returns the updated thin but the outdated rate. I suppose it probably doesn't matter much tho since as far as I can see this is racy anyway.
Ah, right, I see we are waiting for an event and thinning mode is not communicated explicitly.
So please remove DEFINE_EXPECT thing for SetRate() and let's have the rest as is.