Hello All, I'm trying again, now that we're hosted at freelists ;-) Our PCI audio card WDM miniport driver connects to WavePCI and has a non-PCM (AC3 over SPDIF) capable pin. We ran into the following issue when trying to stream AC3 over SPDIF (under WinXP Pro): the latest versions of WinDVD and other DVD players use IReferenceClock to derive and set the current AC3 stream position (and thus read/write KSPROPERTY_AUDIO_POSITION). Once the DVD player attempts to set the KSPROPERTY_AUDIO_POSITION PlayOffset/WriteOffset, the read back value of PlayOffset is changed but WriteOffset is NOT. The result is totally desynced audio<->video after any stream discontinuity. The KSPROPERTY_AUDIO_POSITION is handled by the WavePCI class driver so unfortunately we've no influence on the returned values. Note that KSPROPERTY_AUDIO_POSITION does work with PCM audio streams. Below I've attached the WHQL AC3 driver test log for our WavePCI driver. We have been able to fix this issue by moving to an WaveCyclic implementation but we'd like to fix the WavePCI version for its better low latency performance. So here's my question: 1) Is this a known bug (I guess it is because failure of HCT test case 34:1.7 is allowed with WavePCI drivers) and is a fix for this planned 2) Is it possible to fix this issue by exposing the KSPROPERTY_AUDIO_POSITION property from the miniport driver, which node should expose the property and is there any sample code how to do this. Thanks, Stephan Kappertz *********************** AC-3 Driver Test log ************************** Start Tests:AC-3 Driver Test:[Tue Sep 10 10:24:44 2002] Start Case: ID 34:1.7 : KS Pin Tests\GetSetPosition:[Tue Sep 10 10:24:54 2002] Device Name = KS Pin #2 on M-AUDIO Delta 1010 S/PDIF Attempting to instantiate the pin using the _WAVEFORMATEX specifier Successfully instantiated Render pin Setting render pin to state KSSTATE_ACQUIRE Setting render pin to state KSSTATE_PAUSE Submitting 583680 bytes to render pin... Setting render pin to state KSSTATE_PAUSE Submitting IOCTL_KS_WRITE_STREAM IRP ... IRP is pending... Setting render pin to state KSSTATE_RUN KSPROPERTY_AUDIO_POSITION handler will be called repeatedly. The value should increase. IOCTL duration: 2.0 ms, (768 bytes), Set: 0, Get: 72, Delta: 72 (0.38 ms) IOCTL duration: 3.0 ms, (960 bytes), Set: 480, Get: 38988, Delta: 38508 (200.56 ms) Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION does not agree with the value set Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION is not within 960 bytes of the value set IOCTL duration: 3.0 ms, (960 bytes), Set: 960, Get: 77384, Delta: 76424 (398.04 ms) Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION does not agree with the value set Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION is not within 960 bytes of the value set IOCTL duration: 2.0 ms, (768 bytes), Set: 1440, Get: 115784, Delta: 114344 (595.54 ms) Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION does not agree with the value set Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION is not within 768 bytes of the value set IOCTL duration: 2.0 ms, (768 bytes), Set: 1920, Get: 154188, Delta: 152268 (793.06 ms) Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION does not agree with the value set Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION is not within 768 bytes of the value set IOCTL duration: 2.0 ms, (768 bytes), Set: 2400, Get: 192584, Delta: 190184 (990.54 ms) Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION does not agree with the value set Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION is not within 768 bytes of the value set IOCTL duration: 3.0 ms, (960 bytes), Set: 2880, Get: 230984, Delta: 228104 (1188.04 ms) Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION does not agree with the value set Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION is not within 960 bytes of the value set IOCTL duration: 3.0 ms, (960 bytes), Set: 3360, Get: 269392, Delta: 266032 (1385.58 ms) Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION does not agree with the value set Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION is not within 960 bytes of the value set IOCTL duration: 3.0 ms, (960 bytes), Set: 3840, Get: 307788, Delta: 303948 (1583.06 ms) Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION does not agree with the value set Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION is not within 960 bytes of the value set IOCTL duration: 3.0 ms, (960 bytes), Set: 4320, Get: 346184, Delta: 341864 (1780.54 ms) Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION does not agree with the value set Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION is not within 960 bytes of the value set IOCTL duration: 3.0 ms, (960 bytes), Set: 4800, Get: 384584, Delta: 379784 (1978.04 ms) Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION does not agree with the value set Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION is not within 960 bytes of the value set IOCTL duration: 3.0 ms, (960 bytes), Set: 5280, Get: 422984, Delta: 417704 (2175.54 ms) Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION does not agree with the value set Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION is not within 960 bytes of the value set IOCTL duration: 2.0 ms, (768 bytes), Set: 5760, Get: 461384, Delta: 455624 (2373.04 ms) Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION does not agree with the value set Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION is not within 768 bytes of the value set IOCTL duration: 2.0 ms, (768 bytes), Set: 6240, Get: 499784, Delta: 493544 (2570.54 ms) Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION does not agree with the value set Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION is not within 768 bytes of the value set IOCTL duration: 2.0 ms, (768 bytes), Set: 6720, Get: 538188, Delta: 531468 (2768.06 ms) Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION does not agree with the value set Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION is not within 768 bytes of the value set IOCTL duration: 2.0 ms, (768 bytes), Set: 7200, Get: 576584, Delta: 569384 (2965.54 ms) Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION does not agree with the value set Failure: The value retrieved from KSPROPERTY_AUDIO_POSITION is not within 768 bytes of the value set Setting render pin to state KSSTATE_PAUSE Setting render pin to state KSSTATE_ACQUIRE Setting render pin to state KSSTATE_STOP End Case: ID 34:1.7 : FAIL : KS Pin Tests\GetSetPosition : [Tue Sep 10 10:24:57 2002] Start Case: ID 34:3.6 : DirectSound Tests\Get/SetCurrentPosition:[Tue Sep 10 10:25:19 2002] Device Name = M-AUDIO Delta 1010 S/PDIF (DirectSound) Calling DirectSoundCreate Calling SetCooperativeLevel Calling CreateSoundBuffer Calling Lock Calling Unlock Calling Play SetCurrentPosition and GetCurrentPosition will be called repeatedly, and the values of the play cursor will be compared API duration: 3.0 ms, (960 bytes), Set: 0, Get: 72, Delta: 72 (0.38 ms) API duration: 2.0 ms, (768 bytes), Set: 480, Get: 552, Delta: 72 (0.38 ms) API duration: 3.0 ms, (960 bytes), Set: 960, Get: 1440, Delta: 480 (2.50 ms) API duration: 2.0 ms, (768 bytes), Set: 1440, Get: 1512, Delta: 72 (0.38 ms) API duration: 3.0 ms, (960 bytes), Set: 1920, Get: 1988, Delta: 68 (0.35 ms) API duration: 2.0 ms, (768 bytes), Set: 2400, Get: 2472, Delta: 72 (0.38 ms) API duration: 3.0 ms, (960 bytes), Set: 2880, Get: 2952, Delta: 72 (0.38 ms) API duration: 2.0 ms, (768 bytes), Set: 3360, Get: 3428, Delta: 68 (0.35 ms) API duration: 3.0 ms, (960 bytes), Set: 3840, Get: 3908, Delta: 68 (0.35 ms) API duration: 2.0 ms, (768 bytes), Set: 4320, Get: 4392, Delta: 72 (0.38 ms) API duration: 3.0 ms, (960 bytes), Set: 4800, Get: 4872, Delta: 72 (0.38 ms) API duration: 2.0 ms, (768 bytes), Set: 5280, Get: 5352, Delta: 72 (0.38 ms) API duration: 3.0 ms, (960 bytes), Set: 5760, Get: 5908, Delta: 148 (0.77 ms) API duration: 2.0 ms, (768 bytes), Set: 6240, Get: 6912, Delta: 672 (3.50 ms) API duration: 3.0 ms, (960 bytes), Set: 6720, Get: 8004, Delta: 1284 (6.69 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 960 bytes of the value set API duration: 3.0 ms, (960 bytes), Set: 7200, Get: 9196, Delta: 1996 (10.40 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 960 bytes of the value set API duration: 3.0 ms, (960 bytes), Set: 7680, Get: 10488, Delta: 2808 (14.63 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 960 bytes of the value set API duration: 2.0 ms, (768 bytes), Set: 8160, Get: 11872, Delta: 3712 (19.33 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 768 bytes of the value set API duration: 3.0 ms, (960 bytes), Set: 8640, Get: 12848, Delta: 4208 (21.92 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 960 bytes of the value set API duration: 2.0 ms, (768 bytes), Set: 9120, Get: 12864, Delta: 3744 (19.50 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 768 bytes of the value set API duration: 3.0 ms, (960 bytes), Set: 9600, Get: 12996, Delta: 3396 (17.69 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 960 bytes of the value set API duration: 2.0 ms, (768 bytes), Set: 10080, Get: 13232, Delta: 3152 (16.42 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 768 bytes of the value set API duration: 3.0 ms, (960 bytes), Set: 10560, Get: 13560, Delta: 3000 (15.63 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 960 bytes of the value set API duration: 2.0 ms, (768 bytes), Set: 11040, Get: 13984, Delta: 2944 (15.33 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 768 bytes of the value set API duration: 7.0 ms, (1728 bytes), Set: 11520, Get: 14492, Delta: 2972 (15.48 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 1728 bytes of the value set API duration: 2.0 ms, (768 bytes), Set: 12000, Get: 15120, Delta: 3120 (16.25 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 768 bytes of the value set API duration: 3.0 ms, (960 bytes), Set: 12480, Get: 15832, Delta: 3352 (17.46 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 960 bytes of the value set API duration: 2.0 ms, (768 bytes), Set: 12960, Get: 16360, Delta: 3400 (17.71 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 768 bytes of the value set API duration: 3.0 ms, (960 bytes), Set: 13440, Get: 17264, Delta: 3824 (19.92 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 960 bytes of the value set API duration: 2.0 ms, (768 bytes), Set: 13920, Get: 18264, Delta: 4344 (22.63 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 768 bytes of the value set API duration: 3.0 ms, (960 bytes), Set: 14400, Get: 19360, Delta: 4960 (25.83 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 960 bytes of the value set API duration: 2.0 ms, (768 bytes), Set: 14880, Get: 20552, Delta: 5672 (29.54 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 768 bytes of the value set API duration: 3.0 ms, (960 bytes), Set: 15360, Get: 21836, Delta: 6476 (33.73 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 960 bytes of the value set API duration: 2.0 ms, (768 bytes), Set: 15840, Get: 23220, Delta: 7380 (38.44 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 768 bytes of the value set API duration: 3.0 ms, (960 bytes), Set: 16320, Get: 24704, Delta: 8384 (43.67 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 960 bytes of the value set API duration: 2.0 ms, (768 bytes), Set: 16800, Get: 24740, Delta: 7940 (41.35 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 768 bytes of the value set API duration: 3.0 ms, (960 bytes), Set: 17280, Get: 24824, Delta: 7544 (39.29 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 960 bytes of the value set API duration: 2.0 ms, (768 bytes), Set: 17760, Get: 25056, Delta: 7296 (38.00 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 768 bytes of the value set API duration: 3.0 ms, (960 bytes), Set: 18240, Get: 25384, Delta: 7144 (37.21 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 960 bytes of the value set API duration: 2.0 ms, (768 bytes), Set: 18720, Get: 25808, Delta: 7088 (36.92 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 768 bytes of the value set API duration: 3.0 ms, (960 bytes), Set: 19200, Get: 26328, Delta: 7128 (37.13 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 960 bytes of the value set API duration: 2.0 ms, (768 bytes), Set: 19680, Get: 26944, Delta: 7264 (37.83 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 768 bytes of the value set API duration: 3.0 ms, (960 bytes), Set: 20160, Get: 27656, Delta: 7496 (39.04 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 960 bytes of the value set API duration: 2.0 ms, (768 bytes), Set: 20640, Get: 28464, Delta: 7824 (40.75 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 768 bytes of the value set API duration: 3.0 ms, (960 bytes), Set: 21120, Get: 29056, Delta: 7936 (41.33 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 960 bytes of the value set API duration: 2.0 ms, (768 bytes), Set: 21600, Get: 30052, Delta: 8452 (44.02 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 768 bytes of the value set API duration: 3.0 ms, (960 bytes), Set: 22080, Get: 31152, Delta: 9072 (47.25 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 960 bytes of the value set API duration: 2.0 ms, (768 bytes), Set: 22560, Get: 32344, Delta: 9784 (50.96 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 768 bytes of the value set API duration: 3.0 ms, (960 bytes), Set: 23040, Get: 33632, Delta: 10592 (55.17 ms) Failure: The value retrieved from GetCurrentPosition does not agree with the value set Failure: The value retrieved from GetCurrentPosition is not within 960 bytes of the value set End Case: ID 34:3.6 : FAIL : DirectSound Tests\Get/SetCurrentPosition : [Tue Sep 10 10:25:22 2002] ****************** WDMAUDIODEV addresses: Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx Subscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe Unsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx URL to WDMAUDIODEV page: http://www.wdmaudiodev.de/