Mechanism for retrieval of previously captured audio
First Claim
Patent Images
1. A method performed by a computer system, comprising:
- writing, by a device-side audio handling input/output unit (DIO) of a hardware device, audio data generated by the hardware device at a DIO position into a ring buffer;
receiving, by a system-side audio handling input/output unit (SIO), a request from a software program to consume past audio data from the ring buffer;
providing, by the SIO, the past audio data from the ring buffer to the software program, starting from an SIO position that is behind the DIO position in the ring buffer;
putting, by the SIO, a client thread of the software program to sleep until the DIO position is ahead of the SIO position by at least a client-side offset; and
when the DIO position is ahead of the SIO position by at least the client-side offsetawaking, by the SIO, the client thread of the software program, andproviding, by the SIO, the audio data from the ring buffer to the software program, by starting to provide the audio data from the SIO position within the ring buffer after providing the past audio data and catching up to real-time audio data being written into the ring buffer.
1 Assignment
0 Petitions
Accused Products
Abstract
In one embodiment, a device-side audio handling input/output unit (DIO) of a microphone writes audio data generated by the microphone into a ring buffer. A system-side audio handling I/O unit (SIO) receives a request from a software program to consume past audio data from the ring buffer. The SIO provides the past audio data from the ring buffer to the software program. Other embodiments are also described and claimed.
-
Citations
18 Claims
-
1. A method performed by a computer system, comprising:
-
writing, by a device-side audio handling input/output unit (DIO) of a hardware device, audio data generated by the hardware device at a DIO position into a ring buffer; receiving, by a system-side audio handling input/output unit (SIO), a request from a software program to consume past audio data from the ring buffer; providing, by the SIO, the past audio data from the ring buffer to the software program, starting from an SIO position that is behind the DIO position in the ring buffer; putting, by the SIO, a client thread of the software program to sleep until the DIO position is ahead of the SIO position by at least a client-side offset; and when the DIO position is ahead of the SIO position by at least the client-side offset awaking, by the SIO, the client thread of the software program, and providing, by the SIO, the audio data from the ring buffer to the software program, by starting to provide the audio data from the SIO position within the ring buffer after providing the past audio data and catching up to real-time audio data being written into the ring buffer. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A computer system comprising:
-
one or more processors; and a non-transitory computer readable storage medium having instructions stored therein, the instructions when executed by the one or more processors cause the computer system to write, by a device-side audio handling input/output unit (DIO) of a hardware device, audio data generated by the hardware device at a DIO position within a ring buffer, wherein the DIO enables higher layer programs to access hardware functions of the hardware device without needing to know details of the hardware functions, receive, by a system-side audio handling input/output unit (SIO), a request from a software program executed by the computer system to consume past audio data from the ring buffer, provide, by the SIO, the past audio data starting from a SIO position, which is behind the DIO position, within the ring buffer to the software program, put, by the SIO, a client thread of the software program to sleep until the DIO position is ahead of the SIO position by at least a client-side offset; and when the DIO position is ahead of the SIO position by at least the client-side offset awake, by the SIO, the client thread of the software program; and provide, by the SIO, the audio data from the ring buffer to the software program by starting to provide the audio data from the SIO position within the ring buffer to the software program after providing the past audio data and catching up to the real-time audio data being written into the ring buffer. - View Dependent Claims (10)
-
-
11. A computer system having audio-based user input capability, comprising:
-
a ring buffer; a microphone; and one or more processors to execute a device-side audio handling input/output unit (DIO) and a system-side audio handling input/output unit (SIO), wherein the DIO is a device driver of the microphone that writes digital audio data produced by the microphone at a DIO position within the ring buffer, wherein the SIO receives a request from a software program to consume past audio data from the ring buffer, wherein the SIO provides the past audio data starting from a SIO position, which is behind the DIO position, within the ring buffer to the software program, while the DIO continues to write the audio data being produced by the microphone at the DIO position within the ring buffer, and wherein the SIO is to put a client thread of the software program to sleep until the DIO position is ahead of the SIO position by at least a client-side offset, and when the DIO position is ahead of the SIO position by at least the client-side offset, the SIO is to (i) awaken the client thread of the software program, and (ii) provide the audio data from the ring buffer to the software program, and wherein the SIO provides the audio data from the SIO position within the ring buffer to the software program after providing the past audio data and catching up to real-time audio data being written into the ring buffer. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18)
-
Specification