http://bugs.winehq.org/show_bug.cgi?id=31029
--- Comment #9 from Vincent Povirk madewokherd@gmail.com 2012-06-27 10:50:45 CDT --- If a preferred vendor is specified, the loop runs first trying only decoders from the preferred vendor. If that fails, the loop runs again trying all decoders. The first decoder to successfully initialize is immediately returned.
The important point here is that we don't seek the stream after we've used it to initialize a decoder, or if we do we don't go on to try to use that decoder. That pretty much means the last thing we do has to be an Initialize call.