Electrical computers and digital processing systems: multicomput – Computer-to-computer protocol implementing – Computer-to-computer data streaming
Reexamination Certificate
1996-07-01
2002-06-11
Rinehart, Mark H. (Department: 2152)
Electrical computers and digital processing systems: multicomput
Computer-to-computer protocol implementing
Computer-to-computer data streaming
C709S229000, C709S232000, C709S233000, C709S234000, C709S241000, C709S241000, C713S152000, C713S164000, C700S094000
Reexamination Certificate
active
06405255
ABSTRACT:
BACKGROUND OF THE INVENTION
(1) Field of the Invention
The present invention relates to the field of providing operating system services for use by audio and video applications. More specifically, the present invention is a method and apparatus for mixing and splitting multiple independent audio data streams in kernel space, i.e. part of an operating system that performs basic functions such as allocating hardware resources.
(2) Art Related to the Invention
Audio and video applications running on a computer (e.g. a workstation, a personal computer “PC”, mainframe, etc.) often require mixing and splitting of data (e.g., audio and/or video) as the data is being input or output to some type of network device such as an Integrated Services Digital Network (ISDN) device. An ISDN device is a digital phone network defining B-channels carrying up to 64 Kbps.
Many mixer and splitter devices are implemented in firmware or hardware on a card for a PC. A mixer may mix outputs from two specific audio peripheral devices and mix inputs on a microphone or some other set of peripheral devices. There are also software based mixers and splitters which are available in Apple Macintosh computers, IBM PC's and IBM PC compatibles, Sun Microsystem, Inc.'s workstations and in other UNIX based machines. More particularly, there is the Audio File (AF) system from Digital Equipment Corporation (DEC) of Maynard, Massachusetts, and Network Audio System (NAS) from Network Computing Devices (NCD), Inc. of Mountain View, California, which are both audio servers that have mixing capabilities.
FIG. 1
illustrates an exemplary embodiment of computer employing a conventional mixer/splitter device. Computer
101
includes a storage device
103
, processor (CPU)
105
and audio device
110
coupled through bus
107
. Audio applications
100
,
102
and
104
are coupled to a software-based mixer and splitter, audio server
106
. Audio server
106
is contained in user space
108
which the area in the storage device used for execution of user programs, and is coupled to audio device
110
. Audio server
106
takes incoming audio data streams from one or more audio applications
100
,
102
and
104
, mixes them together and transmits them to audio device
110
. Audio server
106
also takes an audio data stream coming from the audio device
110
, clones the data and transmits the data to one or more audio applications
100
,
102
and
104
requesting the data.
As illustrated in
FIG. 1
, software-based mixing and splitting functions in the prior art are performed in user space
108
and audio device
106
can only handle one audio application at a time. Consequently, an audio application has to provide its own mixing and splitting functions or depend on audio servers such as NAS and AF to provide that functionality via a proprietary API (Application Programming Interface). Further, an audio server retains exclusive use of the audio device, forcing audio applications to use a given audio server or not have access to the audio device at all. This is a poor programming practice since it cannot be assumed that a given audio server will be available on another machine.
It is more desirable to have the capability to process multiple simultaneous audio streams in kernel space rather than in user space since this allows multiple audio applications to access an audio device and allows backward compatibility with existing audio applications because, among other things, the current Application Program Interface (API) does not change. The ability to write to an existing API allows the splitting and mixing operations to be transparent regardless of the audio applications from which audio data is being received and transmitted for the mixing and splitting operations.
Therefore it is desirable to have a method and an apparatus for processing multiple simultaneous audio streams in kernel space.
BRIEF SUMMARY OF THE INVENTION
The present invention provides for processing of multiple simultaneous audio streams. Additionally, the present invention provides for the mixing and splitting capabilities in kernel space rather than in user space of a system's software environment. This allows for some backward compatibility with old applications running audio and allows for writing to an existing interface. The ability to write to an existing interface allows the splitting and mixing operations to be transparent regardless of the audio applications from which audio data is being received and transmitted for the splitting and mixing operations.
In one embodiment of the invention, a computer has a central processing unit (CPU) coupled to a storage device. The storage device has several audio applications contained in user space. An audio server (mixer and/or splitter) and an audio device driver are in kernel space. The present invention also has a data flow checker and adjuster for checking the flow of data into data queues and a setup application for connecting the audio server and the audio device driver. The data flow checker and adjuster adjusts the flow of data by sending a message upstream or downstream instructing the upstream or downstream processes/devices to send more data or stop sending data depending on how full the data queues are.
REFERENCES:
patent: 5481719 (1996-01-01), Ackerman et al.
patent: 5485409 (1996-01-01), Gupta et al.
patent: 5502573 (1996-03-01), Fujinami
patent: 5519833 (1996-05-01), Agranat et al.
patent: 5521918 (1996-05-01), Kim
patent: 5584023 (1996-12-01), Hsu
patent: 5640320 (1997-06-01), Jackson et al.
patent: 5664044 (1997-09-01), Ware
patent: 5692213 (1997-11-01), Goldberg et al.
patent: 5703794 (1997-12-01), Heddle et al.
patent: 5726989 (1998-03-01), Dokic
patent: 5734731 (1998-03-01), Marx
patent: 5761498 (1998-06-01), Ooe et al.
patent: 5768126 (1998-06-01), Frederick
patent: 5768527 (1998-06-01), Zhu et al.
patent: 5801685 (1998-09-01), Miller et al.
patent: 5815634 (1998-09-01), Daum et al.
patent: 5815707 (1998-09-01), Krause et al.
patent: 5845239 (1998-12-01), Laczko, Sr. et al.
patent: 5847765 (1998-12-01), Sanpei
patent: 5892506 (1999-04-01), Hermanson
patent: 5894557 (1999-04-01), Bade et al.
patent: 5899987 (1999-05-01), Yarom
patent: 5918228 (1999-06-01), Rich et al.
patent: 5920572 (1999-07-01), Washington et al.
patent: 5946487 (1999-08-01), Dangelo
patent: 5956088 (1999-09-01), Shen et al.
patent: 5956710 (1999-09-01), Yarom
patent: 6047323 (2000-04-01), Krause
patent: 6070198 (2000-05-01), Krause et al.
patent: 6098112 (2000-08-01), Ishijima et al.
patent: 6122668 (2000-09-01), Teng et al.
patent: 6137834 (2000-10-01), Wine et al.
patent: 6181712 (2001-01-01), Rosengren
Bundschuh Michael J.
Stoltz Benjamin H.
Yu Yan J.
Blakely & Sokoloff, Taylor & Zafman
Rinehart Mark H.
Sun Microsystems Inc.
Vaughn, Jr. William C.
LandOfFree
Mixing and splitting multiple independent audio data streams... does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with Mixing and splitting multiple independent audio data streams..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Mixing and splitting multiple independent audio data streams... will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2964030