Movatterモバイル変換


[0]ホーム

URL:


US10104571B1 - System for distributing data using a designated device - Google Patents

System for distributing data using a designated device
Download PDF

Info

Publication number
US10104571B1
US10104571B1US15/651,450US201715651450AUS10104571B1US 10104571 B1US10104571 B1US 10104571B1US 201715651450 AUS201715651450 AUS 201715651450AUS 10104571 B1US10104571 B1US 10104571B1
Authority
US
United States
Prior art keywords
value
audio
airtime
devices
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
US15/651,450
Inventor
Milos Jorgovanovic
Jin Guo
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Amazon Technologies IncfiledCriticalAmazon Technologies Inc
Priority to US15/651,450priorityCriticalpatent/US10104571B1/en
Assigned to AMAZON TECHNOLOGIES, INC.reassignmentAMAZON TECHNOLOGIES, INC.ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS).Assignors: GUO, JIN, JORGOVANOVIC, MILOS
Application grantedgrantedCritical
Publication of US10104571B1publicationCriticalpatent/US10104571B1/en
Activelegal-statusCriticalCurrent
Anticipated expirationlegal-statusCritical

Links

Images

Classifications

Definitions

Landscapes

Abstract

Described are techniques for configuring a group of devices to perform a function by using a master device to provide data to other devices within the group. Test data may be communicated between a selected device and each device in the group to determine link quality values for each communication. A value indicative of the airtime that would be used to distribute data using the selected device may be determined. This process may be repeated for each device within the group. The selected device associated with the lowest airtime value may be designated as the master device. Data transmitted from the master device to the other devices may be used to cause the group of devices to perform a function.

Description

PRIORITY
This application is a continuation of, and claims priority to, pending U.S. patent application Ser. No. 15/246,070, filed on Aug. 24, 2016, entitled “System for Configuring Distributed Audio Output Using a Designated Audio Device”. Application Ser. No. 15/246,070 is incorporated by reference herein in its entirety.
BACKGROUND
When configuring a group of networked audio devices to provide a synchronized audio output, the devices used and the manner in which the audio data is distributed may be constrained by characteristics of the audio devices or network.
BRIEF DESCRIPTION OF FIGURES
The detailed description is set forth with reference to the accompanying figures. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The use of the same reference numbers in different figures indicates similar or identical items or features.
FIG. 1 depicts an implementation of a system for distributing audio data to multiple audio devices in communication with an access point.
FIG. 2 is a block diagram depicting one implementation of a computing device within the scope of the present disclosure.
FIG. 3 is a flow diagram illustrating a method for configuring a set of audio devices to provide a distributed audio output.
FIG. 4 depicts an implementation of a system for distributing audio data to multiple audio devices using a master audio device.
FIG. 5 is a flow diagram illustrating a method for determining a master audio device for use providing a distributed audio output.
FIG. 6 is a flow diagram illustrating a method for determining whether the airtime used by a selected group of audio devices to distribute audio data exceeds the resources of a network.
While implementations are described in this disclosure by way of example, those skilled in the art will recognize that the implementations are not limited to the examples or figures described. It should be understood that the figures and detailed description thereto are not intended to limit implementations to the particular form disclosed but, on the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope as defined by the appended claims. The headings used in this disclosure are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to) rather than the mandatory sense (i.e., meaning must). Similarly, the words “include”, “including”, and “includes” mean “including, but not limited to”.
DETAILED DESCRIPTION
Audio systems may include multiple audio devices, in communication with one another via one or more networks, to provide a synchronized audio output to users within an environment. In some cases, a user may select a particular group of audio devices to be used, such as a set of audio devices within a particular room of a home, or all of the audio devices located on a particular floor of the home. The user may also select a particular audio application or audio content for output. Based on the location and other characteristics of each audio device, the timing and volume of the audio output for each audio device may be configured. For example, a time delay between various audio streams provided to different devices may be used to synchronize the audio output. As another example, different devices may be used to provide audio output at different volumes based on distance from a listening position, different channels of a surround-sound output, and so forth.
However, the quality of the audio output provided using a group of networked audio devices may be limited based on the characteristics of the audio devices and of the network. For example, multiple audio devices, access points, and other devices may communicate using a Wi-Fi® protocol that corresponds at least in part to section 802.11 of the specifications set forth by the Institute of Electrical and Electronics Engineers (IEEE). The frequency bands, number of channels, and other characteristics of the network may determine an airtime capacity for one or more channels of the network. Each device accessing the network may utilize a portion of the total Wi-Fi® airtime able to be supported by the network. Airtime may include the time used by a device to transmit and receive data, which may be measured in frames or units of time. The airtime used by a device may be affected by the characteristics of the device, the characteristics of the access point, the distance between the device and a wireless access point, the presence objects between the device and the access point, and so forth. For example, a device may transmit and receive data at a particular rate, which may be expressed as a data throughput value measured in units of data per units of time. A first device having a low data throughput value would use a greater quantity of airtime to transmit and receive data than a second device having a greater data throughput value. The airtime available for use by a group of audio devices may vary based on the current level of use (e.g., congestion) of a network. If the airtime used by a group of audio devices exceeds the available airtime of a network, attempts to provide an audio output using the group of audio devices may fail, or irregularities in the audio output, such as audio stuttering, may be observed.
While the airtime used by a group of audio devices can be reduced by removing one or more devices from the group, in some cases, modifying the manner in which audio data is distributed to the audio devices may reduce the airtime associated with providing the audio output. For example, audio data is typically distributed to a group of audio devices using a master audio device, which receives audio data from an external source then provides the audio data to other networked audio devices, referred to as slave audio devices. The particular audio device that is selected for use as the master audio device and the manner in which the master audio device transmits audio data to slave audio devices may affect the total amount of airtime used by the group of audio devices.
Described in this disclosure are techniques for determining a particular audio device, from within a group of audio devices, that will minimize the airtime used to provide an audio output. This particular audio device may be designated as the master audio device for the group of audio devices. After a master audio device has been determined, the airtime used by the group of audio devices may be determined based on data throughput values calculated for each audio device. In other implementations, other values indicative of the quality of a communication link between audio devices and access points, or between audio devices and other audio devices may be used in place of or in addition to data throughput values. For example, a received signal strength indication (RSSI), a signal-to-noise ratio (SNR), a modulation and coding scheme (MCS) value, a retransmission rate, or a count of data streams transmittable by a device may also be used as an indication of the quality of a communication link. If the determined airtime for the group of audio devices is less than a threshold, audio data may be provided from the master audio device to the group of audio devices for output. If the airtime exceeds the threshold, a notification may be generated indicating that the group of audio devices may not be used, or that use of the selected group of audio devices may result in errors, such as audio stuttering.
In one implementation, a group of audio devices may distribute audio data using a wireless access point. For example, audio data from a master audio device may be provided to other audio devices via communication links between the audio devices and the access point. The group of audio devices may be determined based on user input, preexisting default device group data, or automatically based on data throughput or other values determined for the audio devices. Device data associated with a group of audio devices may indicate data throughput values for communication between each of the audio devices and the access point. The data throughput values for each device may correspond to the rate at which data is successfully transmitted between one or more wireless access points and the audio device, such as a quantity of bits per unit time. In some implementations, the data throughput value for each audio device may be determined based on the physical data rate and packet error rate associated with the audio device. For example, an audio device that communicates using a Wi-Fi® protocol may be configured to calculate an average physical data rate, determined based in part on an associated MCS of the audio device. Continuing the example, the average physical data rate (AVGPHY) may include a moving average, determined using a quantity of historical values (L) for the physical data rate (PHY). In some cases, each value for the physical data rate may be weighted using a weighting coefficient (W), as indicated inEquation 1 below:
AVGPHY=W0*PHYN+W1*PHYN-1+ . . . +WL*PHYN-L   (Equation 1)
In some implementations, the equation used to determine the average physical data rate for an audio device may include other factors, such as congestion associated with communication using the audio device, one or more constants, and so forth. The average physical data rate and the packet error rate (PER) for a particular audio device may be used to calculate the data throughput (THR), which in some implementations may include a Transmission Control Protocol (TCP) throughput, associated with communication between the audio device and an access point. The average physical data rate may be multiplied by a scaling factor (K), which may be determined based on one or more of the MCS or physical data rate of the audio device, as indicated inEquation 2 below. For example, scaling factors may be determined using a look-up table or other data structure that associates scaling factor values with ranges of physical data rates.
THR=(K*AVGPHY)*[AVGPHY/(1+PER)]   (Equation 2)
In other implementations, the equation used to determine the data throughput value for an audio device may include other factors, such as congestion associated with communication using the audio device, one or more constants, and so forth. In some implementations, the data throughput value for each audio device may be determined by the audio device, itself. For example, an audio device may be configured to monitor a connection between the audio device and an access point to determine the physical data rate of the connection. The audio device may also be configured, such as by using an audio device driver, to monitor a packet error rate associated with communications between the audio device and the access point. Computer-executable instructions stored in association with the audio device may be used to calculate the data throughput value based on the physical data rate and the packet error rate. In other implementations, the data throughput value may be determined by one or more other computing devices. For example, a server, the master audio device, or another computing device may determine the physical data rate or packet error rate associated with an audio device, and calculate the data throughput value. As another example, an audio device may determine a physical data rate and packet error rate, while a separate computing device may determine the data throughput value based on the physical data rate and packet error rate.
The audio device associated with the greatest data throughput value may be selected for use as the master audio device. Because each transmission of audio data may utilize the link between the master audio device and the access point, selection of a master audio device having the greatest data throughput for communication with the access point may reduce the airtime used by the group of audio devices. After the master audio device has been determined, a value indicative of the airtime used to distribute the audio data to the audio devices may be determined. The airtime (AT) used may depend on the number of audio devices (N) within the group, the data throughput value for the master audio device (THM), the data throughput values for the slave audio devices (TH1, TH2 . . . THN), and the audio throughput associated with an application or audio content (THA) to be output, as indicated inEquation 3 below:
AT=[N−1*(THA/THM)]+(THA/TH1)+ . . . +(THA/THN)   (Equation 3)
In some implementations, calculation of the airtime value may also be determined based on the packet error rates of one or more audio devices, a congestion value associated with communication using the audio device(s), one or more constants, and so forth. If the airtime associated with the group of audio devices is less than a threshold airtime value, audio data may be provided from the master audio device to the other audio devices via the access point. If the airtime exceeds the threshold airtime value, a notification may be generated indicating the relationship between the airtime for the audio devices and the threshold airtime value. For example, a notification may indicate that it is not possible to provide a particular audio output using a selected group of audio devices, or that attempting to provide the audio output using the selected group may result in errors or irregularities, such as audio stuttering.
In some implementations, the master audio device or another computing device in communication therewith may determine a congestion value associated with use of the network. For example, access data, such as a clear channel access register, may be used to determine a count of unsuccessful attempts to communicate data by one or more of the audio devices, as well as a total count of attempts to communicate data. The ratio of the count of unsuccessful attempts to the total count of attempts may indicate a level of congestion associated with the network. The congestion value may be used to affect the calculated airtime value or the threshold value to which the airtime value is compared. For example, if the sum of the airtime value and the congestion value exceeds the threshold airtime value, a notification may be generated indicating that it is not possible to provide a particular audio output using the selected group of audio devices without experiencing errors or irregularities.
In some implementations, the master audio device may receive audio data from another computing device in the environment, such as via a Bluetooth® communication link. In such cases, the utilization of the wireless radio of the master audio device may limit the devices that may be present in the group of audio devices that receives audio data from the master audio device. Based on the number of audio devices (N) within the group of audio devices, an airtime value (ATR) associated with the airtime used by the master audio device to receive the audio data from another device (e.g., a source of the audio data), the congestion value (C), the audio throughput (THA) associated with the application or audio content, and the data throughput (THM) of the master audio device, a value indicative of the radio utilization (RU) of the master audio device may be determined, as illustrated in Equation 4:
RU=ATR+[(N−1)*(THA/THM)*(1−C)]   (Equation 4)
The radio utilization value may indicate the amount of airtime or other resources used by the wireless radio of the master audio device. The radio utilization of the master audio device may differ from the Wi-Fi® airtime used to distribute the audio data if, for example, the master audio device receives the audio data via a Bluetooth® connection or another protocol unrelated to the communication channel used to communicate with the slave audio devices. If the radio utilization value exceeds a threshold utilization value, a notification may be generated indicating that the group of audio devices may not be used to provide an audio output, or that use of the group of audio devices may include a reduced quality output or irregularities, such as audio stuttering.
In another implementation, a master audio device may be used to provide audio data directly to other audio devices, such as by using a multicast transmission to send audio data to a group of audio devices in a single transmission. To determine an audio device within the group of audio devices to designate as the master audio device, test data may be transmitted between audio devices to determine data throughput values associated with communication between different audio devices. For example, a first audio device may provide test data, such as probe request packets, to each other audio device within the group. The first audio device may receive responses, such as probe response packets, from the other audio devices. The transmission of the test data may be used to determine a set of data throughput values associated with communication between the first audio device and each of the other audio devices. In other implementations, other indications of the strength or quality of the communications, such as RSSI, SNR, MCS values, retransmission rates, or numbers of data streams may be determined in addition to or in place of the data throughput values. The first audio device may also determine a data throughput value (TH1) associated with communication between the first audio device and the access point. The greatest data throughput value (THMax) between the first audio device and one of the other audio devices may be used to determine a value indicative of the airtime (AT) that would be used to distribute audio data using the first audio device as a master audio device, as indicated in Equation 5 below:
AT=[(1/THMax)+(1/TH1)]   (Equation 5)
In some implementations, the value indicative of the airtime used by a potential master audio device may also be affected by the packet error rates of one or more audio devices, a congestion value associated with use of the audio device(s), one or more constants, and so forth. This process may be repeated for each audio device within the group of audio devices. The audio device associated with the lowest airtime value may be designated as the master audio device. Because each transmission of audio data may utilize the links between the master audio device and the other audio devices, selection of a master audio device that uses the least amount of airtime to transmit audio data to the other audio devices may reduce the total airtime used by the group of audio devices.
After the master audio device has been determined, a maximum airtime value (ATMax) associated with distribution of audio data from the master audio device to the other audio devices may be determined. The maximum airtime value may be determined based on the data throughput associated with the audio application or content (THA), the data throughput values (THR) associated with the slave audio devices, the packet error rates (PER) associated with the slave audio devices, the data throughput value (TH1) between the master audio device and the access point, and the packet error rate (PER1) associated with the master audio device, as indicated in Equation 6 below:
ATMax=max{(THA/THR)*(1+PER)}+(THA/TH1)*(1+PER1)   (Equation 6)
In Equation 6, above, the quantity [(THA/THR)*(1+PER)] may be determined for each audio device, based on the data throughput value and packet error rate for the particular audio device. The quantity max{(THA/THR)*(1+PER)} may include the maximum value determined for one of the audio devices. In some cases, the maximum airtime value may also be affected by a congestion value associated with use of one or more of the audio devices, one or more constants, and so forth.
If the maximum airtime value associated with the group of audio devices is less than a threshold airtime value, audio data may be provided from the master audio device to the other audio devices. If the maximum airtime value exceeds the threshold airtime value, a notification may be generated indicating the relationship between the airtime for the audio devices and the threshold airtime value. For example, a notification may indicate that it is not possible to provide a particular audio output using a selected group of audio devices, or that attempting to provide the audio output using the selected group may result in errors or irregularities, such as audio stuttering.
In some implementations, test data may be transmitted using only a subset of the audio devices, while other audio devices may be determined as unsuitable for use as the master audio device without use of test data. For example, a data throughput value associated with communication between each audio device and an access point may be determined. For audio devices having a data throughput value that exceeds a threshold value, test data may be transmitted and the data throughput values for communication with other audio devices may be determined. Audio devices having a data throughput value that does not meet the threshold value may be excluded from use as a master audio device. As another example, one or more audio devices may be excluded from use as a master audio device based on the location of the audio device(s) or the ability of the audio device(s) to detect and communicate data with other audio devices. Continuing the example, if a particular audio device is positioned near an extremity of a structure and the particular audio device is unable to exchange data with another audio device positioned at an opposite extremity of the structure, the particular audio device may be excluded from use as a master audio device. In other implementations, the location of one or more audio devices may be determined, and audio devices that are not within a threshold distance of each other audio device may be excluded from use as a master audio device.
In some implementations, the master audio device or another computing device in communication therewith may determine a congestion value, which in some cases may include a ratio of the count of unsuccessful attempts to communicate using the network to a total count of attempts. The congestion value may be used to affect the calculated maximum airtime value or the threshold airtime value. For example, if the sum of the maximum airtime value and the congestion value exceeds the threshold airtime value, a notification may be generated indicating that it is not possible to provide a particular audio output using the selected group of audio devices or that attempting to use the selected group of audio devices may reduce the quality of the audio output.
In some implementations, a radio utilization value corresponding to use of the wireless radio of the master audio device may be determined, such as by using Equation 7, below.
RU=ATR+max{(THA/THR)*(1+PER)}*(1−C)   (Equation 7)
In Equation 7, the quantity (THA/THR)*(1+PER) may be determined for each slave audio device, and the quantity max{(THA/THR)*(1+PER)} may include the largest value for this quantity determined with regard to a particular slave audio device. If the radio utilization value exceeds a threshold utilization value, a notification may be generated indicating the relationship between the utilization value and the threshold utilization value.
FIG. 1 depicts an implementation of asystem100 for distributingaudio data102 to multiple audio devices. Theaudio data102 may be used to provide an audio output using the audio devices. The audio output may include, for example, a synchronized output in which multiple audio devices emit sound. In theexample system100,FIG. 1 depicts amaster audio device104, a first slave audio device106(1), and one or more additional slave audio devices106(N). WhileFIG. 1 depicts themaster audio device104 as a smart television that may include one or more speakers, and the slaveaudio devices106 as freestanding speaker devices, the audio devices may include any type of device that is capable of receiving audio data via a network and generating audio output based on theaudio data102. For example, themaster audio device104 and slaveaudio devices106 may communicate with one or morewireless access points108 using a Wi-Fi® network. In other implementations, the audio devices may communicate using other types of networks or protocols, such as Bluetooth®, ZigBee®, Z-Wave®, Ethernet, 3G, 4G, LTE, and so forth. WhileFIG. 1 depicts asingle access point108, in other implementations, the audio devices may communicate withmultiple access points108, and theaccess points108 may communicate with one another via an Ethernet connection or another type of direct or wireless method of data communication.
FIG. 1 depicts a first communication link110(1) between themaster audio device104 and the access point(s)108, a second communication link110(2) between the first slave audio device106(1) and the access point(s)108, and one or more additional communication links110(N) between the additional slave audio device(s)106(N) and the access point(s)108.Audio data102 received by themaster audio device104 may be distributed to the slaveaudio devices106 via the communication links110. For example,FIG. 1 illustrates a third communication link110(3) between one ormore content servers112 and the access point(s)108 that may be used to provideaudio data102 from the content server(s)112 to themaster audio device104 via the third communication link110(3) and first communication link110(1).
In other embodiments, themaster audio device104 may receiveaudio data102 from one or moreexternal devices114, such as a computing device in communication with themaster audio device104 via a Bluetooth® connection or another type of protocol. For example,FIG. 1 depicts an exampleexternal device114 as a tablet computer, which may provideaudio data102 to themaster audio device104 via a fourth communication link110(4), which may, in some implementations, include a Bluetooth® connection.
Themaster audio device104 may provideaudio data102 received from one or more of the content server(s)112 or external device(s)114 to the slaveaudio devices106 by transmitting theaudio data102 to the access point(s)108 via the first communication link110(1). The first slave audio device106(1) may then receive theaudio data102 via the second communication link110(2). Each additional slave audio device106(N) may receive theaudio data102 via an additional communication link110(N).
In some implementations, the slaveaudio devices106, or another computing device in communication therewith, may be configured to determinelink quality values116 associated with the quality of thecommunication links110 between the slaveaudio devices106 and the access point(s)108. For example, the first slave audio device106(1) may determine a first link quality value116(1), and one or more additional slave audio devices106(N) may determine additional link quality values116(N). Thelink quality values116 may include, for example, data throughput values associated with the rate of communication using the communication links110. In other implementations, thelink quality values116 may include RSSI values, SNR values, MCS values, retransmission rates, or an indication of a number of data streams able to be processed by aslave audio device106. Themaster audio device104 may also determine alink quality value116 associated with communication between themaster audio device104 and the access point(s)108. Thelink quality values116 may be used to determine which of the audio devices is designated as themaster audio device104. For example, amaster audio device104 associated with the greatest data throughput value may be designated to minimize the airtime used to transmitaudio data102 to the slaveaudio devices106 using themaster audio device104. Continuing the example, because the first communication link110(1) between themaster audio device104 and the access point(s)108 would be used for each communication ofaudio data102, use of the audio device having the greatest data throughput as themaster audio device104 would minimize the airtime used to distribute theaudio data102 to the audio devices. Thelink quality values116 may also be used to determine the airtime that would be used to distribute theaudio data102 from themaster audio device104 to the slaveaudio devices106 via thecommunication links110 with the access point(s)108.
FIG. 2 is a block diagram200 depicting one implementation of acomputing device202 within the scope of the present disclosure. Thecomputing device202 may include, without limitation, any of the devices depicted inFIG. 1, such as amaster audio device104, aslave audio device106, or anothercomputing device202 in communication with one or more audio devices, such as anexternal device114 orcontent server112. In other implementations, thecomputing device202 may include aseparate computing device202, not depicted inFIG. 1, that is in communication with theaccess point108 or one or more of the audio devices. Additionally, whileFIG. 2 depicts a single block diagram200, thecomputing device202 may includemultiple computing devices202 that collaborate to perform the functions described herein. For example, multiple audio devices orother computing devices202 in communication therewith may perform the functions of the depictedcomputing device202.
Thecomputing device202 may include one ormore power supplies204 configured to provide electrical power suitable for operating the components of thecomputing device202. In some implementations, thepower supply204 may include a rechargeable battery, fuel cell, photovoltaic cell, power conditioning circuitry, and so forth.
Thecomputing device202 may include one or more hardware processor(s)206 (processors) configured to execute one or more stored instructions. The processor(s)206 may include one or more cores. One ormore clocks208 may provide information indicative of date, time, ticks, and so forth. For example, the processor(s)206 may use data from theclock208 to generate a timestamp, trigger a preprogrammed action, and so forth.
Thecomputing device202 may include one or more communication interfaces210, such as input/output (I/O) interfaces212, network interfaces214, and so forth. The communication interfaces210 may enable thecomputing device202, or components of thecomputing device202, to communicate with audio devices andother computing devices202 or components thereof. The I/O interfaces212 may include interfaces such as Inter-Integrated Circuit (I2C), Serial Peripheral Interface bus (SPI), Universal Serial Bus (USB) as promulgated by the USB Implementers Forum, RS-232, and so forth.
The I/O interface(s)212 may couple to one or more I/O devices216. The I/O devices216 may include any manner of input device or output device associated with thecomputing device202 or with anothercomputing device202 in communication therewith. For example, I/O devices216 may include touch sensors, keyboards, mouse devices, microphones, image sensors (e.g., cameras), scanners, displays, speakers, haptic devices, printers, motion sensors, location sensors, and so forth. In some implementations, the I/O devices216 may be physically incorporated with acomputing device202 or may be externally placed.
The network interfaces214 may be configured to provide communications between thecomputing device202 and other devices, such as the I/O devices216, routers,access points108, and so forth. The network interfaces214 may include devices configured to couple to one or more networks including local area networks (LANs), wireless LANs, wide area networks (WANs), wireless WANs, and so forth. For example, the network interfaces214 may includecomputing devices202 compatible with Ethernet, Wi-Fi®, Wi-Fi Direct®, Bluetooth®, Bluetooth® Low Energy, ZigBee®, Z-Wave®, 3G, 4G, LTE, and so forth.
Thecomputing device202 may include one or more busses or other internal communications hardware or software that allows for the transfer of data between the various modules and components of thecomputing device202.
As shown inFIG. 2, thecomputing device202 may include one ormore memories218. Thememory218 may include one or more computer-readable storage media (CRSM). The CRSM may be any one or more of an electronic storage medium, a magnetic storage medium, an optical storage medium, a quantum storage medium, a mechanical computer storage medium, and so forth. Thememory218 may provide storage of computer-readable instructions, data structures, program modules, and other data for the operation of thecomputing device202. A few example modules are shown stored in thememory218, although the same functionality may alternatively be implemented in hardware, firmware, or as a system on a chip (SoC).
Thememory218 may include one or more operating system (OS)modules220. TheOS module220 may be configured to manage hardware resource devices such as the I/O interfaces212, the network interfaces214, the I/O devices216, and to provide various services to applications or modules executing on theprocessors206. TheOS module220 may implement a variant of the FreeBSD™ operating system as promulgated by the FreeBSD® Project; UNIX® or a UNIX-like operating system; a variation of the Linux™ operating system as promulgated by Linus Torvalds; the Windows® operating system from Microsoft Corporation of Redmond, Wash., USA; or other operating systems.
Adata store222 and one or more of the following modules may also be stored in thememory218. The modules may be executed as foreground applications, background tasks, daemons, and so forth. Thedata store222 may use a flat file, database, linked list, tree, executable code, script, or other data structure to store information. In some implementations, thedata store222 or a portion of thedata store222 may be distributed across one or more other devices includingother computing devices202, network attached storage devices, and so forth.
Acommunication module224 stored in thememory218 may be configured to establish communications with audio devices, servers,external devices114, orother computing devices202.
Thememory218 may also store adevice group module226. Thedevice group module226 may accessdevice group data228 that indicates one or more audio devices to be used to provide an audio output. In some implementations, thedevice group module226 may be configured to provide a user interface, receive user input indicative of one or more audio devices, and store the user input asdevice group data228. For example, user input may be used to select particular audio devices for use providing an audio output. Continuing the example, a user may select a first group of audio devices located on the first floor of a dwelling to provide a first audio output, and a second group of audio devices located on the second floor of the dwelling to provide a different audio output. Device identifiers indicative of the audio devices selected for each group may be stored asdevice group data228. In some implementations, the user interface may also receive user input indicative of theaudio data102 to be used to generate the audio output. For example, theaudio data102 may include one or more of an application or audio content that may be used to cause one or more audio devices to emit sound.
In other implementations, thedevice group data228 may include preexisting, default data indicating one or more audio devices. In still other implementations, thedevice group module226 may be configured to generatedevice group data228 based on characteristics of theaudio data102 or one or more of the audio devices. For example, based on one or more rules or threshold values, thedevice group module226 may determine audio devices having a data throughput or other indication of signal strength that exceeds a threshold, or audio devices having a packet error rate or predicted airtime use that is less than a threshold, and generatedevice group data228 indicative of these audio devices.
Thememory218 may also store a devicemetric module230. The devicemetric module230 may accessdevice data232 indicative of one or more characteristics of the audio devices indicated in thedevice group data228. In some implementations, thedevice group module226 may access audio devices to determine thedevice data232. In other implementations, thedevice group module226 may provide a request to one or more of the audio devices, responsive to which the audio devices may provide thedevice data232. In still other implementations, the audio devices may periodically providedevice data232 to thecomputing device202. Thedevice data232 may include one or more of a physical data rate, a packet error rate, or a data throughput value associated with communication between the audio devices and the access point(s)108. In other implementations, thedevice data232 may include other values indicative of communication strength between the audio devices and access point(s)108, such as RSSI, SNR, or MCS values, retransmission rates, or an indication of the number of data streams able to be transmitted by an audio device.
In some implementations, one or more of the audio devices may determine data throughput values or other values indicative of communication strength, which may be provided to thecomputing device202 asdevice data232. In other implementations, the audio devices may determinedevice data232 such as a physical data rate and packet error rate, and the devicemetric module230 may calculate data throughput values for the audio devices using thisdevice data232, as indicated inEquation 2 above.
Thememory218 may also store amaster determination module234. Themaster determination module234 may determine which audio device, indicated in thedevice group data228, may be designated as themaster audio device104. The other indicated audio devices may then function as slaveaudio devices106. As described with regard toFIG. 1, themaster audio device104 may receiveaudio data102 from an external source, such as acontent server112 orexternal device114. Themaster audio device104 may then distribute theaudio data102 to the slaveaudio devices106 via thecommunication links110 between the audio devices and the access point(s)108. Themaster audio device104 may be selected by determining the audio device that corresponds to the greatest data throughput value, or otherlink quality value116, indicated in thedevice data232. In some implementations, themaster determination module234 may exclude one or more of the audio devices from use as themaster audio device104. For example, if thedevice data232 associated with an audio device indicates one or more characteristics that may prevent the audio device from receivingaudio data102 from external sources or distributing theaudio data102 to other audio devices, or reduce the quality of such actions, that audio device may be excluded independent of the data throughput value associated therewith.
Thememory218 may additionally store acongestion module236, which may determine a congestion value associated with use of one or more of the communication links110. In some implementations, the congestion value may be determined based onaccess data238, such as a clear channel access register associated with the audio devices. For example, theaccess data238 may indicate a count of unsuccessful attempts to communicate data using one ormore communication links110 as well as a total count of attempts to communicate data using the communication link(s)110. The ratio of unsuccessful access attempts to total access attempts may indicate a level of congestion associated with use of the communication link(s)110. For example, a large percentage of unsuccessful access attempts may occur during periods of high use, which may indicate that the network is congested. A smaller percentage of unsuccessful access attempts may occur during periods that the network is not congested.
Thememory218 may also store anairtime module240, which may calculate an airtime value indicative of the airtime that would be used if the selectedaudio data102 were distributed to the selected group of audio devices using themaster audio device104 designated by themaster determination module234. As described previously and illustrated usingEquation 3, the airtime value may depend on the number of audio devices indicated by thedevice group data228, an audio throughput value associated with theaudio data102, a data throughput value associated with communication between themaster audio device104 and the access point(s)108, and the data throughput values associated with communication between each of the slaveaudio devices106 and the access point(s)108.
Theairtime module240 may determine correspondence between the determined airtime value and one or more threshold airtime values, which may be stored asthreshold data242. In some implementations, the airtime value or the threshold value may be modified based on the congestion value determined by thecongestion module236. For example, the total airtime used to support a selected group of audio devices during a period of congestion may be represented by the sum of the airtime value and the congestion value. In some implementations the threshold airtime value may be determined based on the maximum airtime capacity of the network, minus a constant or percentage, such as from five to ten percent. Because the quality of an audio output may decrease as utilization of the network airtime approaches one hundred percent, setting the threshold airtime value at an amount less than one hundred percent may prevent this decrease in quality.
If the sum of the airtime value and the congestion value is less than a threshold value, distribution of theaudio data102 using the designatedmaster audio device104 may be initiated. If the sum of the airtime value and the congestion value is greater than the threshold value, theairtime module240 may cause a notification to be accessed. For example, the notification may indicate that it is not possible to provide an audio output using the selected group of audio devices. In such cases, thecomputing device202 may not initiate distribution of theaudio data102. As another example, the notification may indicate that providing audio output using the selected audio devices may result in irregularities, such as audio stuttering. In such a case, thecomputing device202 may initiate distribution of theaudio data102 automatically or responsive to user input confirming the notification. As yet another example, the notification may indicate a relationship between the airtime that would be used by the audio devices and the threshold value. Continuing the example, the notification may indicate a quantity by which the airtime used by the audio devices exceeds the available airtime of the network.
In some implementations, thememory218 may additionally include autilization module244. Theutilization module244 may determine a value indicative of a level of utilization associated with themaster audio device104. For example, themaster audio device104 may include a wireless radio capable of communication using Wi-Fi® and Bluetooth® protocols. If themaster audio device104 receivesaudio data102 via a Bluetooth® communication link110 from anexternal device114, this utilization of the wireless radio may limit the resources available for themaster audio device104 to transmit theaudio data102 to slaveaudio devices106. As described previously and illustrated usingEquation 4, the value indicative of utilization of themaster audio device104 may be based on an airtime value associated with receipt of theaudio data102 from an external source, such as the Bluetooth® airtime used by the wireless radio, the number of audio devices within the group, the audio throughput associated with theaudio content102, the data throughput values and packet error rates associated with the slaveaudio devices104, and the congestion value.
Thethreshold data242 may also include one or more threshold utilization values. Theutilization module244 may determine correspondence between a determined utilization value and one or more of the threshold utilization values. If the utilization value is less than the threshold utilization value, distribution of theaudio data102 using the designatedmaster audio device104 may be initiated. If the utilization value is greater than the threshold utilization value, a notification may be generated indicating the relationship between the utilization value and the threshold utilization value. The notification may include, without limitation, the same types of notifications described previously with regard to the airtime value.
Other modules246 may also be present in thememory218. For example, encryption modules may be used to encrypt and decrypt communications betweencomputing devices202. Theother modules246 may also include modules for receiving user input to configure parameters of audio devices, set threshold values of thethreshold data242, and so forth.Other modules246 may further include location modules that may be used to determine the location of particular audio devices relative to other audio devices or access points108. In some implementations, the locations of devices may be determined based ondevice data232. For example, thedevice data232 may include data indicative of the current location of an audio device. In other implementations, the locations of devices may be determined using a radio navigation-based system, such as a Global Positioning System (GPS) receiver, or other terrestrial or satellite-based navigational systems. In still other implementations, the locations of devices may be determined using one or more device sensors or other I/O devices216.Other modules246 may additionally include modules used to synchronize and control an audio output, such as by modifying a timing or a volume of particular audio signals.
Other data248 within thedata store222 may include user input data, such as configurations and settings associated withcomputing devices202.Other data248 may also include security data, such as encryption keys and schema, access credentials, and so forth.Other data248 may additionally include rules, algorithms, and so forth used to synchronize and control audio output, such as by determining time delays between the emissions of sounds based on the locations of audio devices.
In different implementations,different computing devices202 may have different capabilities or capacities. For example, servers may have significantlymore processor206 capability andmemory218 capacity compared to theprocessor206 capability andmemory218 capacity of audio devices.
FIG. 3 is a flow diagram300 illustrating a method for configuring a set of audio devices to provide a distributed audio output.Block302 determinesaudio data102 and a set of audio devices for providing an audio output. For example, user input may indicate a particular application orother audio data102 to be used to generate an audio output. In some cases, an audio throughput value associated with theaudio data102 may be determined. User input may also be used to indicate a particular set of audio devices to be used to provide the audio output. In other implementations, one or more applications or audio device may be automatically selected based on preexisting default data or based on values determined fromdevice data232 associated with the audio devices. For example, audio devices having data throughput values that exceed a threshold value may be used to provide an audio output in the absence of user input.
Block304 determines alink quality value116 for at least a subset of the audio devices. Thelink quality values116 may indicate the quality ofcommunication links110 between the audio devices and one or more access points108. For example, thelink quality values116 may include one or more of data throughput, RSSI, SNR, or MCS values. As another example, thelink quality values116 may include retransmission rates. As yet another example, thelink quality values116 may include a count of data streams that may be simultaneously processed by an audio device. In some implementations, the audio devices, orother computing devices202 in communication therewith, may be configured to determine an average physical data rate (e.g., usingEquation 1, above) and a packet error rate associated with the audio devices. The audio devices orother computing devices202 may then determine data throughput values for the audio devices based at least in part on the average physical data rate, packet error rate, and a scaling factor, as indicated inEquation 2 above. In some implementations, the scaling factor may be determined using a look-up table or other data structure that associates values for the scaling factor with values for the physical data rate. For example, a table may associate a scaling factor value of 0.7 with a physical data rate ranging from 0 to 10 Mb/s, a scaling factor value of 0.65 with a physical data rate ranging from 10 to 50 Mb/s, and a scaling factor value of 0.6 with a physical data rate ranging from 50 to 100 Mb/s, and so forth. In some implementations, the scaling factor value may range from 0.7 to 0.4, depending on the modulation and technology associated with an audio device, and a table may associate greater scaling factor values with smaller physical data rate values.
Block306 designates the audio device associated with the greatestlink quality value116 as amaster audio device104. Because each transmission ofaudio data102 to aslave audio device106 may utilize acommunication link110 between themaster audio device104 and the access point(s)108, use of amaster audio device104 having a large data throughput for communication with the access point(s)108 may reduce the airtime used by the group of audio devices.
Block308 determines a congestion value associated with the communication links110. As described with regard toFIG. 2, in some implementations, the congestion value may be determined based onaccess data238, which may include indications of unsuccessful and total attempts to communicate data using acommunication link110. The ratio of unsuccessful access attempts to total access attempts may indicate a current level of use, congestion, or noise associated with one or more of the communication links110.
Block310 determines an airtime value indicative of the airtime used to distribute theaudio data102 to the set of audio devices using the designatedmaster audio device104. As described with regard toFIG. 2, the airtime value may be determined based on the audio throughput of theaudio data102, the data throughput of themaster audio device104, and the data throughput of eachslave audio device106, as indicated inEquation 3. In some implementations, the audio throughput associated with theaudio data102 may include a worst-case estimate (e.g., a maximum value for the audio throughput) to ensure that the airtime used by the audio devices does not exceed the airtime capacity of the network.
Block312 determines the sum of the airtime value and the congestion value to be less than a threshold airtime value. This determination may indicate that the airtime used by the selected set of audio devices may not exceed the available airtime associated with the network. Therefore,audio data102 may be distributed to the audio devices without a degradation in quality due to insufficient airtime.
Block314 determines a utilization value indicative of the resource utilization of themaster audio device104. The resource utilization value may be based on the airtime used by themaster audio device104 to receive theaudio data102 from an external source, such as anexternal device114 orcontent server112. For example, receipt of theaudio data102 from acomputing device202 via a Bluetooth® connection may utilize resources associated with the wireless radio of themaster audio device104. The number and type of slaveaudio devices106 to which theaudio data102 may be distributed may be limited based on the remaining radio resources of themaster audio device104. The utilization value may be based on the airtime used to receive theaudio data102 by themaster audio device104, the number ofslave devices106 to which theaudio data102 is to be distributed, the audio throughput associated with theaudio data102, the data throughput values and packet error rates associated with the slaveaudio devices104, and the congestion value, as indicated inEquation 4.
Block316 determines the utilization value to be less than a threshold utilization value. This determination may indicate that sufficient resources of themaster audio device104 may remain to distribute theaudio data102 to the slaveaudio devices106 after receipt of theaudio data102 by themaster audio device104. Therefore,audio data102 may be distributed to the slaveaudio devices106 without a degradation in quality due to insufficient resources of themaster audio device104.
Block318 begins distributingaudio data102 to the audio devices via thecommunication links110 between the audio devices and the access point(s)108. For example,audio data102 received by themaster audio device104 may be transmitted to anaccess point108 via a first communication link110(1), then from theaccess point108 to aslave audio device106 via a second communication link110(2). Each transmission of audio data from themaster device102 may be provided to theaccess point108 via the first communication link110(1), then to a different slaveaudio device106 via acommunication link110 between theslave audio device106 and theaccess point108.
In some cases, a second group of audio devices may be determined. For example, a user may select a first group of audio devices located in a first room of a structure to provide a first audio output, then select a second group of audio devices located in a different room of the structure to provide a second audio output. The process indicated inblocks302 through318 may be performed in the same manner to determine themaster audio device104 for use with the second group of audio devices, and to determine whether sufficient network airtime remains to provide the second audio output using the second group of audio devices. When block308 determines the congestion value associated with the communication links110, use of thecommunication links110 by the first group of audio devices may be determined as congestion. Thus, when block312 determines the sum of the congestion value and the airtime value for the second group of audio devices, this sum may include the airtime used by the first group of audio devices, which is reflected in the congestion value.
FIG. 4 depicts an implementation of asystem400 for distributingaudio data102 to multiple audio devices using amaster audio device104. For example, rather than providingaudio data102 from themaster audio device104 to slaveaudio devices106 usingcommunication links110 between the slaveaudio devices106 and anaccess point108, themaster audio device104 may function as an access point and provideaudio data102 directly to the slaveaudio devices106. In one implementation, themaster audio device104 may provide theaudio data102 to multiple slaveaudio devices106 in a single transmission, such as a multicast.
Themaster audio device104 may communicate with theaccess point108 via a communication link110(1). In some implementations, themaster audio device104 may receive the audio data from one ormore content servers112, which may provide theaudio data102 to theaccess point108 via a communication link110(3). In other implementations, themaster audio device104 may receiveaudio data102 from a source that is not associated with theaccess point108, such as one or moreexternal devices114. For example, a tablet computer, smart television, orother computing device202 in the environment may provideaudio data102 to themaster audio device104 using a Bluetooth® communication link110(4) or another type of protocol.
Themaster audio device104 may provide theaudio data102 to one or more slaveaudio devices106 directly, without usingcommunication links110 between the slaveaudio devices106 and the access point(s)108, such as by generating a multicast transmission. Theaudio data102 may be provided from themaster audio device104 to the slaveaudio devices106 using one or more communication links110(2), which may include a multicast transmission or other methods of transmitting data.
The slaveaudio devices106 may provide link quality values116, such as data throughput or RSSI values, as described previously, to themaster audio device104. In some implementations, thelink quality values116 may be used to determine a particular audio device to designate as themaster audio device104. For example, use of an audio device having the greatest data throughput or signal strength for communication with other audio devices as amaster audio device104 may minimize the total airtime used to distributeaudio data102 to the slaveaudio devices106. Thelink quality values116 may also be used to determine a maximum airtime value associated with the distribution ofaudio data102 to the slaveaudio devices106 using themaster audio device104.
FIG. 5 is a flow diagram500 illustrating a method for determining amaster audio device104 for use providing a distributed audio output.Block502 determines firstlink quality values116 for a group of audio devices. The firstlink quality values116 may indicate the quality ofcommunication links110 between the audio devices and one or more access points108. For example, user input, defaultdevice group data228, or an automated determination of audio devices based ondevice data232 may be used to select a group of audio devices for use distributing audio output. Each of the audio devices may communicate with anaccess point108. The audio devices, or anothercomputing device202 in communication therewith, may be configured to determine one or more of an average physical data rate, a packet error rate, or a data throughput value associated with each audio device. For example, an average physical data rate for an audio device may be determined usingEquation 1, described above. A data throughput value (THR) may be determined based on the average physical data rate (AVGPHY) and a scaling factor (K), as indicated in Equation 8, below:
THR=(K*AVGPHY)*AVGPHY   (Equation 8)
In some implementations, the data throughput value may also be determined based on a packet error rate for an audio device, a congestion value associated with use of the audio device, one or more constants, and so forth. As described with regard toFIG. 3, in some implementations, the scaling factor may be determined using a look-up table or other data structure associating scaling factor values with values for the physical data rate. In some implementations, the data throughput value for one or more of the audio devices may also be based in part on the packet error rate for the audio device. For example,Equation 2, above, determines a data throughput value based on the average physical data rate and the packet error rate.
In other implementations, other link quality values116, such as RSSI, SNR, MCS values, retransmission rates, or numbers of data streams, may be determined in addition to or in place of the data throughput values. For example, in some cases, a RSSI value for an audio device may be determined more quickly than a data throughput value.
Block504 determines at least a subset of the audio devices having alink quality value116 that exceeds a threshold link quality value. For example, one or more of the audio devices may have a data throughput value associated with communication with anaccess point108 that falls below a threshold value. The limited data throughput of these audio devices may cause the audio devices to utilize additional airtime if designated as amaster audio device104. Therefore, in some implementations, only the subset of audio devices having alink quality value116 that exceeds the threshold link quality value may be eligible for use as themaster audio device104. Audio devices having alink quality value116 that is less than the threshold link quality value may be excluded from use as amaster audio device104.
Block506 selects an audio device from the subset of the audio devices to send and receive test data. In some implementations, each audio device of the subset of audio devices may sequentially be tested by sending test data to, and receiving test data from, each other audio device within the group of audio devices.
Block508 determines if the selected audio device is able to establish communication with each other audio device in the group of audio devices. For example, an audio device may be located a significant distance from another audio device, or one or more obstacles may be placed between two audio devices, preventing the communication of data between the audio devices. If one of these audio devices were used as amaster audio device104, the other of the audio devices may be unable to receive data from themaster audio device104. Therefore, if an audio device is determined to be unable to establish communication with one or more audio devices in the group of audio devices, that particular audio device may be unsuitable for use as amaster audio device104. In such a case, the method may proceed to block514. If a selected audio device is determined to be able to communicate with each other audio device within the group, the method may proceed to block510.
In some implementations, the ability of an audio device to communicate with each other audio device within a group may be determined by providing test data, such as a probe request packet, from the selected audio device to each other audio device. The other audio devices may provide additional test data, such as a probe response packet, to the selected audio device. If test data is not received by either the selected audio device or one of the other audio devices, this may indicate that the location or another characteristic of the selected audio device may inhibit the ability of the selected audio device to function as themaster audio device104. In other implementations, the location of the selected audio device and one or more other audio devices may be determined based ondevice data232 or data determined using one or more location sensors. If the selected audio device is not within a threshold distance of each other audio device within the group, the selected audio device may be rendered ineligible for use as themaster audio device104.
Block510 determines secondlink quality values116 for the group of audio devices. The secondlink quality values116 may indicate the quality ofcommunication links110 between the audio devices and the selected audio device. For example, each of the other devices in the group of audio devices may determine an average physical data rate when communicating test data with the selected audio device. A data throughput value associated with communication between the selected audio device and other audio devices may be determined based on the average physical data rate and a scaling factor, as indicated in Equation 8 above. In some implementations, the data throughput value may also be based on the packet error rate associated with communication between the selected audio device and other audio devices, as indicated inEquation 2 above.
Block512 determines, based on the second link quality values116, an airtime value indicative of the airtime used to distributeaudio data102 to the group of audio devices using the selected audio device as amaster audio device104. In one implementation, the greatest secondlink quality value116 determined for a selected audio device may be determined. The airtime value may be based in part on the greatest secondlink quality value116. For example, a first data throughput value may be determined for communication between the selected audio device and a first audio device within the group. A second data throughput value may be determined for communication between the selected audio device and a second audio device within the group. If the first data throughput value is greater than the second data throughput value, and the data throughput values associated with communication between the selected audio device and any other of the audio devices within the group, then the first data throughput value may be determined to be the greatest second link quality value116 (e.g., THMax in Equation 5). As indicated in Equation 5, above, the airtime value for the selected audio device may be based on the greatest secondlink quality value116 and the data throughput value associated with communication between the selected audio device and the access point(s)108 (TH1 in Equation 5).
Block514 determines if airtime values have been determined for each audio device in the group of audio devices that is able to establish communication with each other audio device within the group. If each audio device within the group has an associated airtime value, or has been excluded from use as amaster audio device104 in block504 or block508, the method may proceed to block516. If one or more audio devices remain for which no airtime value has been determined, the method may return to block506, and blocks508 through512 may be repeated for a subsequent selected audio device.
Block516 designates the audio device associated with the smallest airtime value as themaster audio device104. Audio devices that were excluded from use as a potentialmaster audio device104 inblocks504 and508 may not have an associated airtime value and may not be analyzed atblock516. Designation of amaster audio device104 that utilizes the smallest amount of airtime to distributeaudio data102 to slaveaudio devices106 may reduce the total amount of airtime used by the group of audio devices when generating the audio output.
FIG. 6 is a flow diagram600 illustrating a method for determining if the airtime used by a selected group of audio devices to distributeaudio data102 exceeds the resources of a network. Themethod600 may be performed subsequent to determining amaster audio device104, such as by performing themethod500 illustrated inFIG. 5. As such, second link quality values116, such as data throughput values associated with communication between themaster audio device104 and the slaveaudio devices106 may have previously been determined in performing themethod500 ofFIG. 5. Additionally, a data throughput value associated with communication between themaster audio device104 and one ormore access points108 may also have previously been determined.
Block602 determineslink quality values116 and packet error rates associated with communication between amaster audio device104 and slaveaudio devices106, and between themaster audio device104 and one or more access points108. As discussed previously, one or more of these values may have been determined as part of amethod500 for designating amaster audio device104. In such a case, block602 may include accessing previously-determineddevice data232. In other implementations, block602 may include determining one or morelink quality values116 or packet error rates. For example, one or more audio devices may determine an average physical data rate based in part onEquation 1, above, and determine a data throughput value based on the average physical data rate, as indicated inEquation 2, above.
Block604 determines an audio throughput value associated withaudio data102 to be transmitted. For example, user input may indicateparticular audio data102 or other content, an application for providingaudio data102, and so forth. An audio throughput value may be determined based on the user input. In some implementations, if user input selectingparticular audio data102 or an application is not received, block604 may determine a maximum audio throughput value as a worst-case estimate. The maximum audio throughput value may correspond to theaudio data102 or application having the greatest audio throughput.
Block606 determines airtime values for the transmission ofaudio data102 to the slaveaudio devices106. The airtime values may be based on the audio throughput (THA), thelink quality values116 for the slaveaudio devices106, and the packet error rates (PER) for the slaveaudio devices106. For example, thelink quality values116 may include data throughput values (THR) associated withcommunication links110 between themaster audio device104 and the slaveaudio devices106. The airtime value (AT) for aparticular slave device106 may be determined based onEquation 9, below:
AT=(THA/THR)*(1+PER)   (Equation 9)
In some implementations, the airtime value associated with theslave device106 may also be based on a congestion value associated with communication using theslave device106, one or more constants, and so forth. An airtime value may be determined for eachslave audio device106. Then, block608 may determine a greatest airtime value for the slaveaudio devices106. The greatest airtime value may be used to determine a maximum airtime value for the transmission ofaudio data102 using the group of audio devices.
Block610 determines the maximum airtime value for the group of audio devices based on the greatest airtime value, the audio throughput, and thelink quality value116 and packet error rate for communication between themaster audio device104 and the access point(s)108. For example, the maximum airtime value for the group of audio devices may be determined using Equation 6, above. In Equation 6, the quantity max{(THA/THR)*(1+PER)} may correspond to the maximum airtime value for aparticular slave device106, determined inblocks606 and608.
Block612 determines a congestion value associated with the communication links110. In some implementations, the congestion value may be determined based onaccess data238, which may include indications of unsuccessful and total attempts to communicate data using acommunication link110. The ratio of unsuccessful access attempts to total access attempts may serve as an indicator of a current level of use, congestion, or noise associated with one or more of the communication links110.
Block614 determines the sum of the maximum airtime value and the congestion value to be less than a threshold airtime value. This determination may indicate that the maximum airtime value that would be used by the group of audio devices to distributeaudio data102 may not exceed the airtime capacity of the network. Therefore, theaudio data102 may be distributed using the group of audio devices without a degradation in quality cause by insufficient airtime.
Block616 determines a utilization value indicative of the resource utilization of themaster audio device104. The resource utilization value may be based in part on airtime used by themaster audio device104 to receive theaudio data102 from an external source, such as anexternal device114 orcontent server112. As described with regard toFIG. 3, the slaveaudio devices106 to which themaster audio device104 may distribute data may be limited based on the amount of unused resources of themaster audio device104. In some implementations, the utilization value may be determined as indicated above in Equation 7.
Block618 determines the utilization value to be less than a threshold utilization value. This determination may indicate that sufficient unused resources of themaster audio device104 remain to distribute theaudio data102 to the slaveaudio devices106. Therefore, theaudio data102 may be distributed to the slaveaudio devices106 without a degradation in quality due to insufficient resources of themaster audio device104.
Block620 begins distributing audio data to the slaveaudio devices106 using themaster audio device104. For example, as illustrated inFIG. 4,audio data102 may be received by themaster audio device104 from acontent server112 using a communication link110(1) with anaccess point108. Alternatively or additionally,audio data102 may be received by themaster audio device104 from one or moreexternal devices114 via a communication link110(4), such as a Bluetooth® connection. Themaster audio device104 may then transmit theaudio data102 to one or more slaveaudio devices106 using one or more communication links110(2). In some implementations, the communication links110(2) may include a single transmission, such as a multicast, which may simultaneously provide theaudio data102 to the slaveaudio devices106.
The processes discussed in this disclosure may be implemented in hardware, software, or a combination thereof. In the context of software, the described operations represent computer-executable instructions stored on one or more computer-readable storage media that, when executed by one or more hardware processors, perform the recited operations. Generally, computer-executable instructions include routines, programs, objects, components, data structures, and the like that perform particular functions or implement particular abstract data types. Those having ordinary skill in the art will readily recognize that certain steps or operations illustrated in the figures above may be eliminated, combined, or performed in an alternate order. Any steps or operations may be performed serially or in parallel. Furthermore, the order in which the operations are described is not intended to be construed as a limitation.
Embodiments may be provided as a software program or computer program product including a non-transitory computer-readable storage medium having stored thereon instructions (in compressed or uncompressed form) that may be used to program a computer (or other electronic device) to perform processes or methods described in this disclosure. The computer-readable storage medium may be one or more of an electronic storage medium, a magnetic storage medium, an optical storage medium, a quantum storage medium, and so forth. For example, the computer-readable storage media may include, but is not limited to, hard drives, floppy diskettes, optical disks, read-only memories (ROMs), random access memories (RAMs), erasable programmable ROMs (EPROMs), electrically erasable programmable ROMs (EEPROMs), flash memory, magnetic or optical cards, solid-state memory devices, or other types of physical media suitable for storing electronic instructions. Further, embodiments may also be provided as a computer program product including a transitory machine-readable signal (in compressed or uncompressed form). Examples of transitory machine-readable signals, whether modulated using a carrier or unmodulated, include, but are not limited to, signals that a computer system or machine hosting or running a computer program can be configured to access, including signals transferred by one or more networks. For example, the transitory machine-readable signal may comprise transmission of software by the Internet.
Separate instances of these programs can be executed on or distributed across any number of separate computer systems. Although certain steps have been described as being performed by certain devices, software programs, processes, or entities, this need not be the case, and a variety of alternative implementations will be understood by those having ordinary skill in the art.
Additionally, those having ordinary skill in the art will readily recognize that the techniques described above can be utilized in a variety of devices, environments, and situations. Although the subject matter has been described in language specific to structural features or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as exemplary forms of implementing the claims.

Claims (20)

What is claimed is:
1. A system comprising:
a plurality of devices that includes at least a first device and a second device;
one or more memories storing computer-executable instructions; and
one or more hardware processors to execute the computer-executable instructions to:
transmit first test data from the first device to at least a subset of the plurality of devices;
determine a first set of link quality values indicative of a first quality of communication links between the first device and the at least a subset of the plurality of devices;
transmit second test data from the second device to the at least a subset of the plurality of devices;
determine a second set of link quality values indicative of a second quality of communication links between the second device and the at least a subset of the plurality of devices; and
based on the first set of link quality values and the second set of link quality values, cause the first device to provide data to the at least a subset of the plurality of devices to cause the at least a subset of the plurality of devices to perform an audio-related function associated with the data.
2. The system ofclaim 1, further comprising computer-executable instructions to:
determine, based the first set of link quality values, a first airtime value indicative of airtime used to distribute data from the first device to the at least a subset of the plurality of devices;
determine, based on the second set of link quality values, a second airtime value indicative of airtime used to distribute data from the second device to the at least a subset of the plurality of devices; and
determine that the first airtime value is less than the second airtime value, wherein the first device is caused to provide the data to the at least a subset of the plurality of devices in response to determining that the first airtime value is less than the second airtime value.
3. The system ofclaim 1, further comprising computer-executable instructions to:
determine, based on the first set of link quality values, a maximum airtime value indicative of airtime used to distribute data from the first device to the at least a subset of the plurality of devices; and
determine that the maximum airtime value is less than a threshold airtime value indicative of a maximum quantity of airtime associated with the plurality of devices, wherein the first device is caused to provide the data to the at least a subset of the plurality of devices in response to determining that the maximum airtime value is less than the threshold airtime value.
4. The system ofclaim 1, further comprising computer-executable instructions to:
determine a third link quality value indicative of a third quality of a communication link between the first device and an access point;
determine a fourth link quality value indicative of a fourth quality of a communication link between the second device and the access point;
determine that the third link quality value exceeds a threshold link quality value, wherein the first test data is transmitted from the first device in response to the third link quality value exceeding the threshold link quality value; and
determine that the fourth link quality value exceeds the threshold link quality value, wherein the second test data is transmitted from the second device in response to the fourth link quality value exceeding the threshold link quality value.
5. The system ofclaim 1, further comprising computer-executable instructions to:
determine a third link quality value indicative of a third quality of a communication link between the first device and an access point;
determine a fourth link quality value indicative of a fourth quality of a communication link between the second device and the access point; and
determine that the third link quality value indicates a greater quality than the fourth link quality value;
wherein transmitting of the first test data by the first device is performed prior to transmitting of the second test data by the second device in response to the third link quality value indicating the greater quality than the fourth link quality value.
6. The system ofclaim 1, further comprising computer-executable instructions to:
determine that the first device is within a threshold distance of the at least a subset of the plurality of devices, wherein the first test data is transmitted from the first device in response to the first device being within the threshold distance of the at least a subset of the plurality of devices; and
determine that the second device is within a threshold distance of the at least a subset of the plurality of devices, wherein the second test data is transmitted from the second device in response to the second device being within the threshold distance of at least a subset of the plurality of devices.
7. The system ofclaim 1, further comprising computer-executable instructions to:
determine, based at least in part on the first set of link quality values, a utilization value indicative of radio utilization associated with the first device; and
determine that the utilization value is less than a threshold utilization value, wherein the first device is caused to provide the data in response to the radio utilization value being less than the threshold utilization value.
8. A system comprising:
a plurality of devices including at least a first device and a second device;
one or more memories storing computer-executable instructions; and
one or more hardware processors to execute the computer-executable instructions to:
transmit first test data from the first device to the plurality of devices;
determine, based on transmission of the first test data, a first airtime value indicative of airtime used to distribute data from the first device to the plurality of devices;
transmit second test data from the second device to the plurality of devices;
determine, based on transmission of the second test data, a second airtime value indicative of airtime used to distribute data from the second device to the plurality of devices;
determine that the first airtime value is less than the second airtime value; and
in response to the first airtime value being less than the second airtime value, cause the first device to provide data to at least a subset of the plurality of devices to cause the at least a subset of the plurality of devices to perform an audio-related function.
9. The system ofclaim 8, further comprising computer-executable instructions to:
determine, one or more first link quality values associated with transmission of the first test data from the first device to the plurality of devices;
determine the first airtime value based at least in part on the one or more first link quality values;
determine, one or more second link quality values associated with transmission of the second test data from the second device to the plurality of devices; and
determine the second airtime value based at least in part on the one or more second link quality values.
10. The system ofclaim 8, further comprising computer-executable instructions to:
determine, one or more first link quality values associated with transmission of the first test data from the first device to the plurality of devices;
determine, based at least in part on the one or more first link quality values, a maximum airtime value indicative of airtime used to distribute data from the first device to the plurality of devices; and
determine that the maximum airtime value is less than a threshold airtime value indicative of a maximum quantity of airtime associated with the plurality of devices, wherein the first device is caused to provide data to the plurality of devices in response to determining that the maximum airtime value is less than the threshold airtime value.
11. The system ofclaim 8, further comprising computer-executable instructions to:
determine, a link quality value indicative of a quality of a communication link between the first device and an access point; and
determine that the first link quality value exceeds a threshold link quality value, wherein the first test data is transmitted from the first device in response to the first link quality value exceeding the threshold link quality value.
12. The system ofclaim 8, further comprising computer-executable instructions to:
determine, a first link quality value indicative of a first quality of a communication link between the first device and an access point;
determine, a second link quality value indicative of a second quality of a communication link between the second device and the access point; and
based on the first link quality value and the second link quality value, transmit the first test data from the first device prior to transmitting the second test data from the second device.
13. The system ofclaim 8, further comprising computer-executable instructions to:
determine that the first device is within a threshold distance of the at least a subset of the plurality of devices, wherein the first test data is transmitted from the first device in response to the first device being within the threshold distance of the at least a subset of the plurality of devices.
14. The system ofclaim 8, further comprising computer-executable instructions to:
determine, one or more link quality values associated with transmission of the first test data from the first device to the plurality of devices;
determine, based at least in part on the one or more link quality values, a utilization value indicative of radio utilization associated with the first device; and
determine that the utilization value is less than a threshold utilization value, wherein the first device is caused to provide the data in response to the radio utilization value being less than the threshold utilization value.
15. A system comprising:
a first device;
a second device;
a third device;
one or more memories storing computer-executable instructions; and
one or more hardware processors to execute the computer-executable instructions to:
determine a first airtime value indicative of airtime used to distribute data from the first device to the second device and the third device;
determine a second airtime value indicative of airtime used to distribute data from the second device to the first device and the third device;
determine that the first airtime value is less than the second airtime value; and
in response to the first airtime value being less than the second airtime value, cause the first device to provide data to the second device and the third device to cause the second device and the third device to perform an audio-related function.
16. The system ofclaim 15, further comprising computer-executable instructions to:
determine a first link quality value associated with transmission of data from the first device to the second device; and
determine a second link quality value associated with transmission of data from the first device to the third device;
wherein the first airtime value is determined based at least in part on one or more of the first link quality value or the second link quality value.
17. The system ofclaim 15, further comprising computer-executable instructions to:
determine a first link quality value associated with transmission of data from the first device to the second device;
determine a second link quality value associated with transmission of data from the first device to the third device;
determine, based on one or more of the first link quality value or the second link quality value, a maximum airtime value indicative of airtime used to distribute data from the first device to the second device and the third device; and
determine that the maximum airtime value is less than a threshold airtime value indicative, wherein the first device is caused to provide the data to the second device and the third device in response to determining that the maximum airtime value is less than the threshold airtime value.
18. The system ofclaim 15, further comprising computer-executable instructions to:
determine a first link quality value indicative of a first quality of a communication link between the first device and an access point;
determine a second link quality value indicative of a second quality of a communication link between the second device and the access point;
determine that the first link quality value is greater than the second link quality value; and
in response to determining that the first link quality value is greater than the second link quality value, determine the first airtime value prior to determining the second airtime value.
19. The system ofclaim 15, further comprising computer-executable instructions to:
determine that the first device is within a threshold distance of one or more of the second device or the third device, wherein the first airtime value is determined in response to the first device being within the threshold distance of the one or more of the second device or the third device.
20. The system ofclaim 15, further comprising computer-executable instructions to:
determine, one or more of a first link quality value associated with transmission of data from the first device to the second device or a second link quality value associated with transmission of data from the first device to the third device;
determine, based at least in part on the one or more of the first link quality value or the second link quality value, a utilization value indicative of radio utilization associated with the first device; and
determine that the utilization value is less than a threshold utilization value, wherein the first device is caused to provide the data in response to the radio utilization value being less than the threshold utilization value.
US15/651,4502016-08-242017-07-17System for distributing data using a designated deviceActiveUS10104571B1 (en)

Priority Applications (1)

Application NumberPriority DateFiling DateTitle
US15/651,450US10104571B1 (en)2016-08-242017-07-17System for distributing data using a designated device

Applications Claiming Priority (2)

Application NumberPriority DateFiling DateTitle
US15/246,070US9775069B1 (en)2016-08-242016-08-24System for configuring distributed audio output using a designated audio device
US15/651,450US10104571B1 (en)2016-08-242017-07-17System for distributing data using a designated device

Related Parent Applications (1)

Application NumberTitlePriority DateFiling Date
US15/246,070ContinuationUS9775069B1 (en)2016-08-242016-08-24System for configuring distributed audio output using a designated audio device

Publications (1)

Publication NumberPublication Date
US10104571B1true US10104571B1 (en)2018-10-16

Family

ID=59886626

Family Applications (2)

Application NumberTitlePriority DateFiling Date
US15/246,070ActiveUS9775069B1 (en)2016-08-242016-08-24System for configuring distributed audio output using a designated audio device
US15/651,450ActiveUS10104571B1 (en)2016-08-242017-07-17System for distributing data using a designated device

Family Applications Before (1)

Application NumberTitlePriority DateFiling Date
US15/246,070ActiveUS9775069B1 (en)2016-08-242016-08-24System for configuring distributed audio output using a designated audio device

Country Status (1)

CountryLink
US (2)US9775069B1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
JP6703274B2 (en)*2016-12-152020-06-03富士通株式会社 Management device, wireless communication system, and throughput estimation program
US10848868B2 (en)*2017-02-212020-11-24Hewlett-Packard Development Company, L.P.Audio signal routing to audio devices

Citations (17)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US20050219268A1 (en)2004-03-302005-10-06Kyle Henry MSystem for managing the navigational usability of an interactive map
US20060149850A1 (en)2005-01-052006-07-06Control4 CorporationMethod and apparatus for synchronizing playback of streaming media in multiple output devices
US7359950B2 (en)*2000-07-252008-04-15Samsung Electronics Co., Ltd.Method for managing network when master disappears
US20090124233A1 (en)2007-11-092009-05-14Morris Robert PMethods, Systems, And Computer Program Products For Controlling Data Transmission Based On Power Cost
US20090147746A1 (en)2007-12-032009-06-11Alay OzguVideo multicast, such as layered video multicast for example, using relay devices defined by a channel quality parameter hierarchy
US20090190581A1 (en)2008-01-292009-07-30International Business Machines CorporationOverhead reduction for multi-link networking environments
US8214447B2 (en)2004-06-082012-07-03Bose CorporationManaging an audio network
US8244916B1 (en)2002-02-142012-08-14Marvell International Ltd.Method and apparatus for enabling a network interface to support multiple networks
US20120237054A1 (en)*2006-03-082012-09-20Samsung Electronics Co., Ltd.Method and apparatus for reproducing multi-channel sound using cable/wireless device
US20120271902A1 (en)*2011-04-202012-10-25Atheros Communications, Inc.Selecting forwarding devices in a wireless communication network
US20120303705A1 (en)2011-05-252012-11-29Jung Hoon ParkContents simultaneous playback terminal, the same system and method thereof
US9078072B2 (en)*2013-10-072015-07-07Bose CorporationAudio distribution
US9331799B2 (en)*2013-10-072016-05-03Bose CorporationSynchronous audio playback
US20160350067A1 (en)*2015-05-282016-12-01Bose CorporationAudio Data Buffering
US20170019197A1 (en)*2006-01-282017-01-19Blackfire Research CorporationSystem for synchronous playback of media using a hybrid bluetooth™ and wi-fi network
US20170055020A1 (en)*2014-04-302017-02-23Piksel, Inc.Device Synchronization
US20170098466A1 (en)*2015-10-022017-04-06Bose CorporationEncoded Audio Synchronization

Patent Citations (17)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US7359950B2 (en)*2000-07-252008-04-15Samsung Electronics Co., Ltd.Method for managing network when master disappears
US8244916B1 (en)2002-02-142012-08-14Marvell International Ltd.Method and apparatus for enabling a network interface to support multiple networks
US20050219268A1 (en)2004-03-302005-10-06Kyle Henry MSystem for managing the navigational usability of an interactive map
US8214447B2 (en)2004-06-082012-07-03Bose CorporationManaging an audio network
US20060149850A1 (en)2005-01-052006-07-06Control4 CorporationMethod and apparatus for synchronizing playback of streaming media in multiple output devices
US20170019197A1 (en)*2006-01-282017-01-19Blackfire Research CorporationSystem for synchronous playback of media using a hybrid bluetooth™ and wi-fi network
US20120237054A1 (en)*2006-03-082012-09-20Samsung Electronics Co., Ltd.Method and apparatus for reproducing multi-channel sound using cable/wireless device
US20090124233A1 (en)2007-11-092009-05-14Morris Robert PMethods, Systems, And Computer Program Products For Controlling Data Transmission Based On Power Cost
US20090147746A1 (en)2007-12-032009-06-11Alay OzguVideo multicast, such as layered video multicast for example, using relay devices defined by a channel quality parameter hierarchy
US20090190581A1 (en)2008-01-292009-07-30International Business Machines CorporationOverhead reduction for multi-link networking environments
US20120271902A1 (en)*2011-04-202012-10-25Atheros Communications, Inc.Selecting forwarding devices in a wireless communication network
US20120303705A1 (en)2011-05-252012-11-29Jung Hoon ParkContents simultaneous playback terminal, the same system and method thereof
US9078072B2 (en)*2013-10-072015-07-07Bose CorporationAudio distribution
US9331799B2 (en)*2013-10-072016-05-03Bose CorporationSynchronous audio playback
US20170055020A1 (en)*2014-04-302017-02-23Piksel, Inc.Device Synchronization
US20160350067A1 (en)*2015-05-282016-12-01Bose CorporationAudio Data Buffering
US20170098466A1 (en)*2015-10-022017-04-06Bose CorporationEncoded Audio Synchronization

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
Bernardi, Brenda C., "Notice of Allowance dated Dec. 28, 2017", U.S. Appl. No. 15/421,014, The United States Patent and Trademark Office, dated Dec. 28, 2017.
Bernardi, Brenda C., "Notice of Allowance dated May 25, 2017", U.S. Appl. No. 15/246,070, The United States Patent and Trademark Office, dated May 25, 2017.
D'Agosta, Stephen M., "Non-Final Office Action dated Feb. 16, 2018", U.S. Appl. No. 15/245,897, The United States Patent and Trademark Office, dated Feb. 16, 2018.
Kuo, et al., "Multicast Routing Scheme for Recipient Maximization in Wireless Relay Networks", IEEE Transactions on Vehicular Technology, vol. 59, No. 8, Oct. 2010, dated Oct. 8, 2010.
Saunders, Jr., Joseph, "Non-final Office Action dated Mar. 9, 2018", U.S. Appl. No. 15/373,677, The United States Patent and Trademark Office, dated Mar. 9, 2018.

Also Published As

Publication numberPublication date
US9775069B1 (en)2017-09-26

Similar Documents

PublicationPublication DateTitle
US10117286B1 (en)System for distributing data using multiple communication channels
US10187179B1 (en)System for configuring a packet detection threshold of an audio device
US10735554B1 (en)System for controlling use of a network
US10243871B1 (en)System for controlling use of network resources by devices
US10341792B1 (en)System for distributing audio output using multiple devices
EP3133878A1 (en)Power adjustment apparatus and method
JP4741659B2 (en) Transmission apparatus, transmission method, system LSI, and program
CN110417510A (en) Systems and methods for dynamically configurable air interface
US9838976B1 (en)System for controlling interference associated with wireless communication
CN114337759A (en) Method and system for failure recovery of multiple transmit and receive spot beams
US10104571B1 (en)System for distributing data using a designated device
CN107306412B (en) Method, user equipment and base station for realizing reliable message transmission
US10243864B1 (en)System for modifying data rates used by audio devices
US10149056B1 (en)System for configuring audio devices to distribute audio data
US10524069B1 (en)System for configuring distribution of audio data to devices based on connection status
US10177929B1 (en)System for distributing data to multiple devices
US10425508B1 (en)System for identifying idle time of a protocol to facilitate communication using multiple protocols
WO2025096442A1 (en)Wireless communication method and apparatus thereof
US10027592B1 (en)System to facilitate data transfer in wireless networks
US10448411B1 (en)System for determining optimal antennae for wireless communication
US10158440B1 (en)System for configuring distributed audio output using an access point
US10200724B1 (en)System for optimizing distribution of audio data
US10382075B1 (en)System for limiting interference to a wireless radio of a computing device
JP2024091600A (en) Method and system for reporting channel state information for multiple power offsets - Patents.com
CN113873562B (en)Coding control method, device and system applied to double-card double-pass terminal and base station

Legal Events

DateCodeTitleDescription
STCFInformation on status: patent grant

Free format text:PATENTED CASE

MAFPMaintenance fee payment

Free format text:PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment:4


[8]ページ先頭

©2009-2025 Movatter.jp