Changeset 1335

Show
Ignore:
Timestamp:
02/13/08 11:00:30 (6 months ago)
Author:
rossb
Message:

added explanatory comment re DS API behavior

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • portaudio/branches/v19-devel/src/hostapi/dsound/pa_win_ds.c

    r1286 r1335  
    19141914        long            bytesExpected; 
    19151915        long            buffersWrapped; 
     1916 
    19161917        QueryPerformanceCounter( &currentTime ); 
    19171918        elapsedTime.QuadPart = currentTime.QuadPart - stream->previousPlayTime.QuadPart; 
    19181919        stream->previousPlayTime = currentTime; 
     1920 
    19191921        /* How many bytes does DirectSound say have been played. */ 
    19201922        bytesPlayed = playCursor - stream->previousPlayCursor; 
    19211923        if( bytesPlayed < 0 ) bytesPlayed += stream->outputBufferSizeBytes; // unwrap 
    19221924        stream->previousPlayCursor = playCursor; 
     1925 
    19231926        /* Calculate how many bytes we would have expected to been played by now. */ 
    19241927        bytesExpected = (long) ((elapsedTime.QuadPart * stream->outputBufferSizeBytes) / stream->perfCounterTicksPerBuffer.QuadPart); 
     
    19341937    numBytesEmpty = playCursor - stream->outputBufferWriteOffsetBytes; 
    19351938    if( numBytesEmpty < 0 ) numBytesEmpty += stream->outputBufferSizeBytes; // unwrap offset 
     1939 
    19361940    /* Have we underflowed? */ 
    19371941    if( numBytesEmpty > (stream->outputBufferSizeBytes - playWriteGap) ) 
     
    19411945            stream->outputUnderflowCount += 1; 
    19421946        } 
     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 
    19431958        stream->outputBufferWriteOffsetBytes = writeCursor; 
    19441959        numBytesEmpty = stream->outputBufferSizeBytes - playWriteGap;