[MPlayer-dev-eng] ao_plugin assumption about ao driver play()

Stephen Davies steve at daviesfam.org
Mon Dec 10 14:33:24 CET 2001


On Mon, 10 Dec 2001, Stephen Davies wrote:

> With that all said, though, I need to think some more about the right
> fix.  I don't think I understand the bug properly.

Aha.

Just saw that ao_oss.c play() cuts the written length to a multiple of the
fragment size.  This will be because OSS docs strongly recommend writing
only full fragments if you want to keep sync.  DSP_GETODELAY may only have
precision to within one complete fragment...

I also now understand why this doesn't usually cause a problem.  
MAX_OUTBURST of 65536 is a multiple of common fragment sizes.  As things
start with mplaer.c writing an integral number of fragments (ie,
MAX_OUTBURST), the free space in the oss driver stays as an integral
number of fragments (fragments always become free as a whole).

I adjusted MAX_OUTBURST to 73728 - a multiple of 12288 and 8192, and
solved the underflow problem.

But somehow I don't think that this is a proper fix...

Steve




More information about the MPlayer-dev-eng mailing list