OSS stuff

Duane Clark dclark at leewardfpga.com
Sat Dec 15 18:48:19 CST 2001


The recent OSS stuff is working pretty good. I have one area, where one 
sound clip stops and the next starts, that sometimes has problems. 
Sometimes the second clip runs normally, and sometimes there is just a 
brief bit of the very beginning of the second clip.

I think this is where the problem is. The difference I see is that when 
it breaks, some wodNotifyClient msgs are received before the 
wodGetPosition messages are set to valid values for the new clip. When 
it works, those values get set before the wodNotifyClient msgs. Then 
again, I really don't understand what is going on.

A trace from when it fails:

trace:wave:wodRestart imhere[3-RESTARTING]
trace:wave:wodPlayer_ProcessMessages Received WINE_WM_RESTARTING 0
trace:wave:wodPlayer_FeedDSP fragments=16/16, fragsize=1024, bytes=16384
trace:wave:wodPlayer_WriteMaxFrags Writing wavehdr 0x4290cdf4.0[4096]
trace:wave:wodPlayer_WriteMaxFrags Written 4096  dwLength 4096 
available space was 16384
trace:wave:wodPlayer_WriteMaxFrags Writing wavehdr 0x4290ce14.0[4096]
trace:wave:wodPlayer_WriteMaxFrags Written 4096  dwLength 4096 
available space was 12288
trace:wave:wodPlayer_WriteMaxFrags Writing wavehdr 0x4290ce34.0[4096]
trace:wave:wodPlayer_WriteMaxFrags Written 4096  dwLength 4096 
available space was 8192
trace:wave:wodPlayer_WriteMaxFrags Writing wavehdr 0x4290ce54.0[4096]
trace:wave:wodPlayer_WriteMaxFrags Written 4096  dwLength 4096 
available space was 4096
trace:wave:wodPlayer waiting 46ms (132,46)
trace:wave:OSS_wodMessage (0, 000D, 0000001C, 42BD6EE0, 0000000C);
trace:wave:wodGetPosition (0, 0x42bd6ee0, 12);
trace:wave:wodPlayer_ProcessMessages Received WINE_WM_UPDATE 0
trace:wave:wodPlayer_FeedDSP fragments=0/16, fragsize=1024, bytes=-1226
trace:wave:wodNotifyClient wMsg = 0x03bd dwParm1 = 4290CDF4 dwParam2 = 0000
trace:wave:wodNotifyClient wMsg = 0x03bd dwParm1 = 4290CE14 dwParam2 = 0000
trace:wave:wodNotifyClient wMsg = 0x03bd dwParm1 = 4290CE34 dwParam2 = 0000
trace:wave:wodNotifyClient wMsg = 0x03bd dwParm1 = 4290CE54 dwParam2 = 0000
trace:wave:wodPlayer waiting 132ms (132,4294967295)
trace:wave:wodGetPosition wType=0002 wBitsPerSample=16 
nSamplesPerSec=22050 nChannels=2 nAvgBytesPerSec=88200
trace:wave:wodGetPosition dwPlayedTotal=4294966070
trace:wave:wodGetPosition TIME_SAMPLES=134217421
trace:wave:OSS_wodMessage (0, 000D, 0000001C, 42BD6EE0, 0000000C);
trace:wave:wodGetPosition (0, 0x42bd6ee0, 12);
trace:wave:wodPlayer_ProcessMessages Received WINE_WM_UPDATE 0
trace:wave:wodPlayer_FeedDSP fragments=1/16, fragsize=1024, bytes=742
trace:wave:wodPlayer waiting 132ms (132,4294967295)
trace:wave:wodGetPosition wType=0002 wBitsPerSample=16 
nSamplesPerSec=22050 nChannels=2 nAvgBytesPerSec=88200
trace:wave:wodGetPosition dwPlayedTotal=742
trace:wave:wodGetPosition TIME_SAMPLES=185
trace:wave:OSS_wodMessage (0, 000D, 0000001C, 42BD6EE0, 0000000C);
trace:wave:wodGetPosition (0, 0x42bd6ee0, 12);
trace:wave:wodPlayer_ProcessMessages Received WINE_WM_UPDATE 0
trace:wave:wodPlayer_FeedDSP fragments=3/16, fragsize=1024, bytes=2694
trace:wave:wodPlayer waiting 110ms (110,4294967295)
trace:wave:wodGetPosition wType=0002 wBitsPerSample=16 
nSamplesPerSec=22050 nChannels=2 nAvgBytesPerSec=88200
trace:wave:wodGetPosition dwPlayedTotal=2694
trace:wave:wodGetPosition TIME_SAMPLES=673
trace:wave:OSS_wodMessage (0, 000D, 0000001C, 42BD6EE0, 0000000C);
trace:wave:wodGetPosition (0, 0x42bd6ee0, 12);
trace:wave:wodPlayer_ProcessMessages Received WINE_WM_UPDATE 0
trace:wave:wodPlayer_FeedDSP fragments=5/16, fragsize=1024, bytes=4648
trace:wave:wodPlayer waiting 88ms (88,4294967295)

It continues this way until the DSP buffer is empty, and nothing further 
is written to it.

Here is when it works:

trace:wave:wodRestart imhere[3-RESTARTING]
trace:wave:wodPlayer_ProcessMessages Received WINE_WM_RESTARTING 0
trace:wave:wodPlayer_FeedDSP fragments=16/16, fragsize=1024, bytes=16384
trace:wave:wodPlayer_WriteMaxFrags Writing wavehdr 0x4290cdf4.0[4096]
trace:wave:wodPlayer_WriteMaxFrags Written 4096  dwLength 4096 
available space was 16384
trace:wave:wodPlayer_WriteMaxFrags Writing wavehdr 0x4290ce14.0[4096]
trace:wave:wodPlayer_WriteMaxFrags Written 4096  dwLength 4096 
available space was 12288
trace:wave:wodPlayer_WriteMaxFrags Writing wavehdr 0x4290ce34.0[4096]
trace:wave:wodPlayer_WriteMaxFrags Written 4096  dwLength 4096 
available space was 8192
trace:wave:wodPlayer_WriteMaxFrags Writing wavehdr 0x4290ce54.0[4096]
trace:wave:wodPlayer_WriteMaxFrags Written 4096  dwLength 4096 
available space was 4096
trace:wave:wodPlayer waiting 46ms (132,46)
trace:wave:OSS_wodMessage (0, 000D, 0000001C, 42BD6EE0, 0000000C);
trace:wave:wodGetPosition (0, 0x42bd6ee0, 12);
trace:wave:wodPlayer_ProcessMessages Received WINE_WM_UPDATE 0
trace:wave:wodGetPosition wType=0002 wBitsPerSample=16 
nSamplesPerSec=22050 nChannels=2 nAvgBytesPerSec=88200
trace:wave:wodGetPosition dwPlayedTotal=78
trace:wave:wodGetPosition TIME_SAMPLES=19
trace:wave:OSS_wodMessage (0, 0009, 0000001C, 4290CE74, 00000020);
trace:wave:wodWrite (0, 0x4290ce74, 00000020);
trace:wave:wodWrite imhere[3-HEADER]
trace:wave:wodPlayer_ProcessMessages Received WINE_WM_HEADER 4290ce74
trace:wave:wodPlayer_FeedDSP fragments=1/16, fragsize=1024, bytes=108
trace:wave:wodPlayer_WriteMaxFrags Writing wavehdr 0x4290ce74.0[4096]
trace:wave:wodPlayer_WriteMaxFrags Written 108  dwLength 4096  available 
space was 108
trace:wave:wodPlayer waiting 45ms (132,45)
trace:wave:wodPlayer_FeedDSP fragments=0/16, fragsize=1024, bytes=-990
trace:wave:wodNotifyClient wMsg = 0x03bd dwParm1 = 4290CDF4 dwParam2 = 0000
trace:wave:wodNotifyClient wMsg = 0x03bd dwParm1 = 4290CE14 dwParam2 = 0000
trace:wave:wodNotifyClient wMsg = 0x03bd dwParm1 = 4290CE34 dwParam2 = 0000
trace:wave:wodNotifyClient wMsg = 0x03bd dwParm1 = 4290CE54 dwParam2 = 0000
trace:wave:wodPlayer waiting 132ms (132,4294967295)
trace:wave:OSS_wodMessage (0, 000D, 0000001C, 42BD6EE0, 0000000C);
trace:wave:wodGetPosition (0, 0x42bd6ee0, 12);
trace:wave:wodPlayer_ProcessMessages Received WINE_WM_UPDATE 0
trace:wave:wodPlayer_FeedDSP fragments=2/16, fragsize=1024, bytes=928
trace:wave:wodPlayer_WriteMaxFrags Writing wavehdr 0x4290ce74.108[4096]
trace:wave:wodPlayer_WriteMaxFrags Written 928  dwLength 3988  available 
space was 928
trace:wave:wodPlayer waiting 132ms (132,4294967295)
trace:wave:wodGetPosition wType=0002 wBitsPerSample=16 
nSamplesPerSec=22050 nChannels=2 nAvgBytesPerSec=88200






More information about the wine-devel mailing list