After looking to address your last suggestion, I did notice that the total timeout value was much larger than intended(in fact even larger than what it started out as!). I calculate an effective 20second timeout originally can a current 22second timeout. This is because the gstreamer call during an async state change has a timeout of 10ms as well. So, I am cleaning this section up to have a much more informative comment and to bring the effective timeout down to the 2second mark that is intended. I will commit a change for this as soon as I do some more testing in this area.