×

Systems and methods for running priority-based application threads on a realtime component

  • US 7,599,753 B2
  • Filed: 09/21/2001
  • Issued: 10/06/2009
  • Est. Priority Date: 09/23/2000
  • Status: Active Grant
First Claim
Patent Images

1. An audio mixer, comprising:

  • a buffer submission module configured to create multiple buffers having no data and submit empty buffers to audio hardware in a buffer queue to reserve a time slot for the audio hardware to play data that will subsequently be processed into the empty buffers, the empty buffers being arranged serially in the buffer queue, wherein the audio hardware comprises a sound card and wherein before the sound card attempts to play an empty buffer that has been submitted to the sound card, the audio mixer fills the empty buffer with audio data received from one or more audio applications;

    a tracking module configured to identify a buffer that is currently being processed by the audio hardware, wherein the tracking module allows the audio mixer to know an exact memory location corresponding to audio data is being played for a given time;

    a mix loop module configured to receive one or more data inputs from the one or more audio applications and process the data inputs into a buffer after the buffer has been submitted without any audio data to the audio hardware but before the buffer is processed for playing the audio data by the audio hardware, wherein the mix loop module allows the audio mixer to determine when an empty buffer is just ahead of the audio hardware and mix into that buffer to provide a playable buffer having audio data that will be played, wherein the mix loop module is configured to mix a certain amount of buffers before the buffers are played by the audio hardware and to synchronize mixing with playing by the audio hardware such that if the buffers are mixed at a faster or slower rate than the audio hardware is playing the buffers, then the mix loop module compensates mixing so that the mixing and the playing remain in synchronization, wherein the mix loop module is configured to mix at least two buffers ahead of a buffer being played, but not more than four buffers ahead; and

    wherein the audio applications use one or more priority-based operating system threads to submit data to the mix loop module, and the audio data is processed and written to the buffers from within a realtime thread.

View all claims
  • 2 Assignments
Timeline View
Assignment View
    ×
    ×