Changeset 1335
- Timestamp:
- 02/13/08 11:00:30 (6 months ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
portaudio/branches/v19-devel/src/hostapi/dsound/pa_win_ds.c
r1286 r1335 1914 1914 long bytesExpected; 1915 1915 long buffersWrapped; 1916 1916 1917 QueryPerformanceCounter( ¤tTime ); 1917 1918 elapsedTime.QuadPart = currentTime.QuadPart - stream->previousPlayTime.QuadPart; 1918 1919 stream->previousPlayTime = currentTime; 1920 1919 1921 /* How many bytes does DirectSound say have been played. */ 1920 1922 bytesPlayed = playCursor - stream->previousPlayCursor; 1921 1923 if( bytesPlayed < 0 ) bytesPlayed += stream->outputBufferSizeBytes; // unwrap 1922 1924 stream->previousPlayCursor = playCursor; 1925 1923 1926 /* Calculate how many bytes we would have expected to been played by now. */ 1924 1927 bytesExpected = (long) ((elapsedTime.QuadPart * stream->outputBufferSizeBytes) / stream->perfCounterTicksPerBuffer.QuadPart); … … 1934 1937 numBytesEmpty = playCursor - stream->outputBufferWriteOffsetBytes; 1935 1938 if( numBytesEmpty < 0 ) numBytesEmpty += stream->outputBufferSizeBytes; // unwrap offset 1939 1936 1940 /* Have we underflowed? */ 1937 1941 if( numBytesEmpty > (stream->outputBufferSizeBytes - playWriteGap) ) … … 1941 1945 stream->outputUnderflowCount += 1; 1942 1946 } 1947 1948 /* 1949 From MSDN: 1950 The write cursor indicates the position at which it is safe 1951 to write new data to the buffer. The write cursor always leads the 1952 play cursor, typically by about 15 milliseconds' worth of audio 1953 data. 1954 It is always safe to change data that is behind the position 1955 indicated by the lpdwCurrentPlayCursor parameter. 1956 */ 1957 1943 1958 stream->outputBufferWriteOffsetBytes = writeCursor; 1944 1959 numBytesEmpty = stream->outputBufferSizeBytes - playWriteGap;
