Using a plurality of buffers to provide audio for synchronized playback to multiple audio devices having separate device clocks
First Claim
Patent Images
1. A method of handling communication of information between an entity and multiple devices through respective device drivers, the method comprising:
- allocating each of a plurality of buffers to a respective device of a plurality of devices;
reading, by a respective device-side input/output unit (DIO) of each device, information from a respective current position in each buffer; and
writing, by a system-side audio handling input/output unit (SIO), the information, for synchronized presentation by each of the plurality of devices, into each of the plurality of buffers, wherein writing the information into each buffer comprises;
determining a sum of a safety offset and a presentation latency for each corresponding device;
determining a latency offset for each corresponding device, the latency offset being a difference between the sum of the safety offset and presentation offset for the device and a maximum sum of safety offset and presentation offset of the plurality of devices; and
writing the information into each buffer at an insertion point offset in advance by the latency offset for the respective corresponding device from the current position in each buffer from which information is being read.
0 Assignments
0 Petitions
Accused Products
Abstract
According to one embodiment, a media system communicates with an aggregate device that includes multiple media output devices. When providing media data for presentation, the system adjusts for device clock drift by resampling the media data provided to a media output device based at least in part on a device clock rate difference between a device clock of one of the media output devices and a device clock of another of the media output devices.
-
Citations
15 Claims
-
1. A method of handling communication of information between an entity and multiple devices through respective device drivers, the method comprising:
-
allocating each of a plurality of buffers to a respective device of a plurality of devices; reading, by a respective device-side input/output unit (DIO) of each device, information from a respective current position in each buffer; and writing, by a system-side audio handling input/output unit (SIO), the information, for synchronized presentation by each of the plurality of devices, into each of the plurality of buffers, wherein writing the information into each buffer comprises; determining a sum of a safety offset and a presentation latency for each corresponding device; determining a latency offset for each corresponding device, the latency offset being a difference between the sum of the safety offset and presentation offset for the device and a maximum sum of safety offset and presentation offset of the plurality of devices; and writing the information into each buffer at an insertion point offset in advance by the latency offset for the respective corresponding device from the current position in each buffer from which information is being read. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A system comprising:
-
one or more processors; and a non-transitory storage device storing instructions that, when executed by the one or more processors, cause the one or more processors to perform operations comprising; allocating each of a plurality of buffers to a respective device of a plurality of devices; reading, by a respective device-side input/output unit (DIO) of each device, information from a respective current position in each buffer; and writing, by a system-side audio handling input/output unit (SIO), the information, for synchronized presentation by each of the plurality of devices, into each of the plurality of buffers, wherein writing the information into each buffer comprises; determining a sum of a safety offset and a presentation latency for each corresponding device; determining a latency offset for each corresponding device, the latency offset being a difference between the sum of the safety offset and presentation offset for the device and a maximum sum of safety offset and presentation offset of the plurality of devices; and writing the information into each buffer at an insertion point offset in advance by the latency offset for the respective corresponding device from the current position in each buffer from which information is being read. - View Dependent Claims (7, 8, 9, 10)
-
-
11. A non-transitory storage device storing instructions that, when executed by one or more processors, cause the one or more processors to perform operations comprising:
-
allocating each of a plurality of buffers to a respective device of a plurality of devices; reading, by a respective device-side input/output unit (DIO) of each device, information from a respective current position in each buffer; and writing, by a system-side audio handling input/output unit (SIO), the information, for synchronized presentation by each of the plurality of devices , into each of the plurality of buffers, wherein writing the information into each buffer comprises; determining a sum of a safety offset and a presentation latency for each corresponding device; determining a latency offset for each corresponding device, the latency offset being a difference between the sum of the safety offset and presentation offset for the device and a maximum sum of safety offset and presentation offset of the plurality of devices; and writing the information into each buffer at an insertion point offset in advance by the latency offset for the respective corresponding device from the current position in each buffer from which information is being read. - View Dependent Claims (12, 13, 14, 15)
-
Specification