[MPlayer-dev-eng] [PATCH] Direct3D VO better handling of uncooperative video adapter

Georgi Petrov gogothebee at gmail.com
Mon Jan 12 22:53:08 CET 2009

> On Sat, 2009-01-10 at 14:25 +0200, Georgi Petrov wrote:
>> Hmm, just a thought. The code before the patch doesn't make any checks
>> if the adapter is uncooperative in case the reset code in flip_page()
>> has failed and the next call to Clear ot StretchRect and so on returns
>> an error. So the "failure" may be caused by a code in some of the
>> frame-copy functions like draw_slice() ot d3d_render_frame(). I wrote
>> about flip_page(), because when MPlayer crashes, it says that an error
>> occured in flip_page().
> I'm not sure what you're saying - do you still think that there is a
> condition which makes the rest of MPlayer stop, or do you now think that
> all those problems are inside the Direct3D VO?

It seems I couldn't make myself clear. I made a series of tests and it
really doesn't matter how much time flip_page() takes. Now I see that
sometimes (before the patch) MPlayer hangs in decode_video, which is
completely unrelated to the video out. I observed crashes in flip_page
too (which is really strange).

I think that it's all about the missing checks in render_d3d_frame and
draw_slice. Before the patch they try to do everything they are
supposed to do even if the adapter is already uncooperative, which
leads to all D3D calls returning a failure. It looks like some of
these failures is not handled well and MPlayer eventually hangs.

I don't know why the patch is not accepted actually. May be Reimar
have something else to do. I'm not in a hurry, of course. The patch
just makes the whole handling of this issue much, much better and much
less error-prone.

More information about the MPlayer-dev-eng mailing list