A method and apparatus for interfacing a device driver in real time
applications are provided. On input, the device driver is probed to
determine a data sample block size supported by the device driver. The
device driver delivers data samples to a buffer at each interrupt. The
buffer is accessed to determine the presence of data in at least one
buffer entry, or block. At each such access, a first counter is
incremented to point to a next buffer entry to be accessed. One or more
buffer entries are filled at each interrupt, with any data samples not
sufficient to fill an entry held by the device driver until a subsequent
interrupt. A second counter is incremented by the number of entries filled
by the device driver. The size of each block in the buffer is incremented
until the number of data samples held by the device driver between each
interrupt corresponds to the size of the block, wherein each of the first
and second counters increment by one, on each access to the buffer. On
output, a display cursor is synchronized with an audio signal being played
by storing, in a buffer, a frame number associated with each block of data
samples sent to the device driver. A head pointer tracks each entry in the
buffer as the frame number is stored. As each corresponding frame is
played a tail pointer is incremented to point to the buffer entry
containing the frame number of a next set of data samples to be played. If
the position of the display cursor corresponds to a frame earlier than the
position of the last frame output by the device driver, the position of
the cursor is repeatedly updated until the cursor position coincides with
the position of the last frame output by the device driver.
Um método e um instrumento para conectarar um excitador de dispositivo em aplicações reais do tempo são fornecidos. Na entrada, o excitador de dispositivo é sondado para determinar um tamanho de bloco da amostra dos dados suportado pelo excitador de dispositivo. O excitador de dispositivo entrega amostras dos dados a um amortecedor em cada interrupção. O amortecedor é alcançado para determinar a presença dos dados ao menos em uma entrada do amortecedor, ou o bloco. Em cada tal acesso, um primeiro contrário é incrementado para apontar a uma entrada seguinte do amortecedor a ser alcançada. Um ou os mais entrada do amortecedor é enchido em cada interrupção, com todas as amostras dos dados nao suficientes encher uma entrada prendida pelo excitador de dispositivo até uma interrupção subseqüente. Um segundo contrário é incrementado pelo número das entradas enchidas pelo excitador de dispositivo. O tamanho de cada bloco no amortecedor está incrementado até que o número das amostras dos dados prendidas pelo excitador de dispositivo entre cada interrupção corresponda ao tamanho do bloco, wherein cada uma do primeira e do segunda opõe o incremento por um, em cada acesso ao amortecedor. Na saída, um cursor da exposição é sincronizado com um sinal audio que está sendo jogado armazenar, em um amortecedor, por um número do frame associado com cada bloco das amostras dos dados emitidas ao excitador de dispositivo. Um ponteiro da cabeça segue cada entrada no amortecedor enquanto o número do frame é armazenado. Enquanto cada frame correspondente é jogado um ponteiro da cauda está incrementado para apontar à entrada do amortecedor que contem o número do frame de um jogo seguinte das amostras dos dados a ser jogadas. Se a posição do cursor da exposição corresponder a um frame mais cedo do que a posição do último frame output pelo excitador de dispositivo, a posição do cursor está atualizada repetidamente até que a posição do cursor coincida com a posição do último frame output pelo excitador de dispositivo.