Dynamic buffering in multi-device audio playback environments
By dynamically adjusting the buffer size of the satellite device through the main computing unit, the problem of buffer mismatch in the networked audio system is solved, ensuring the synchronization and high quality of audio playback and improving the listening experience for listeners.
Patent Information
- Application Number
- CN202380097064.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2023-04-12
- Publication Date
- 2025-11-21
AI Technical Summary
In networked audio systems, network jitter and congestion cause a mismatch in the buffer size of satellite devices, affecting the synchronization and quality of audio playback. Existing technologies struggle to effectively adjust the buffer size to cope with changes in network conditions.
The main computing device requests waiting time data from satellite devices, selects the maximum waiting time value to determine the aggregate waiting time value, and dynamically adjusts the buffer size of each satellite device to ensure buffer size synchronization and reduce processing resource consumption.
It enables dynamic adjustment of the satellite device's buffer size under different network conditions, maintaining audio playback synchronization and high quality, reducing processing resource consumption, and improving the listener's listening experience.
Smart Images

Figure CN121002829A_ABST
Abstract
Description
TECHNICAL FIELD
[0001] Various embodiments relate generally to audio systems, and more particularly, to techniques for dynamic buffering in a networked audio playback environment with multiple audio output devices. BACKGROUND
[0002] Improvements in network connectivity have facilitated the proliferation of complex networked audio systems with multiple audio output devices. Such systems typically include a master device (which can or can not include an audio output device) and multiple satellite devices that include respective audio output devices that simultaneously play audio, such as multi-channel audio. The master device is responsible for retrieving audio data from one or more media sources and distributing the audio data in the form of audio packets to the multiple satellite devices for simultaneous playback. For example, the master device transmits multi-channel audio in the form of audio packets to respective satellite devices over a network for playback.
[0003] However, the connections between the devices in a networked system, whether wired or wireless, are susceptible to network jitter and / or other connection issues. Network jitter is a variation in the delay of data packets arriving at the multiple satellite devices that play the audio. Network jitter can cause audio data transmitted by the master device over the network to be lost, adversely affecting the quality of playback by the satellite devices. Accordingly, conventional networked audio systems have attempted various approaches to mitigate the negative effects of network jitter on the quality of audio playback.
[0004] One of the primary causes of network jitter is network congestion, which occurs when the amount of data transmitted over a network exceeds the bandwidth capacity of the network, resulting in reduced network transmission speed and delayed receipt of data packets. To address the negative effects of jitter and congestion in a networked audio system, some systems have employed complex data compression algorithms to reduce the size of data packets transmitted over the network. However, this approach has at least one drawback, which is the need for significant processing power to perform the complex mathematical operations used to compress and decompress the data packets. Because the processing power of many satellite devices in a networked audio system is limited, a significant portion of the processing resources of each satellite device is used to decompress the data packets. As a result, a limited amount of satellite device processing resources is left to process the audio data for playback, which results in a degradation in the quality of audio played by the satellite devices.
[0005] Because network latency and jitter can vary significantly from network to network, it is often difficult to predict the buffer size that will be needed. As a result, a predetermined default buffer size does not work in all situations. Additionally, it is often difficult for a user to determine the appropriate buffer size for a network. These problems can be addressed by increasing the buffer size of a satellite device that plays audio. By increasing the buffer size of a corresponding satellite device, the satellite device can store more audio data packets, thereby maintaining audio playback for a longer period of time when network latency occurs. That is, storing a larger amount of audio data packets in the buffer prevents the satellite device from running out of audio data packets to play, even if network latency causes subsequent audio data packets transmitted by the master device to arrive later than expected.
[0006] However, at least one drawback of increasing the buffer size of a satellite device is that the latency of data processed by the satellite device is associated with an increase. For example, when a buffer in a satellite device queues a large number of audio data packets, the latency or delay associated with processing each audio data packet at the beginning of the queue increases. At least another drawback of increasing the buffer size of a corresponding satellite device in a networked audio system is that the buffer sizes of not all satellite devices in the networked audio system are the same. As a result, when the buffer size of one satellite device in the networked audio system is increased, a mismatch between the respective buffer sizes of each satellite device in the networked audio system results. When the respective buffer sizes of each satellite device in the networked audio system do not match, the satellite device with the larger buffer takes longer to process and play audio data packets than the satellite device with the smaller buffer, thereby disrupting the synchronization of audio playback in the networked system. Unsynchronized audio playback in a networked audio system, such as a multi-channel audio system, degrades the quality of the listening experience.
[0007] As previously mentioned, there is a need for more effective techniques for buffering audio data for playback through a networked audio system having multiple audio output devices. SUMMARY
[0008] Various embodiments of the present disclosure set forth a computer-implemented method for determining a buffer size in a networked audio system. The method includes requesting one or more audio output devices to provide latency data, and receiving a plurality of data samples from the one or more audio output devices, wherein each data sample of the plurality of data samples includes a latency value. The method further includes selecting a maximum latency value from the latency values included in the plurality of data samples, determining an aggregate latency value based on the maximum latency value, determining the buffer size based on the aggregate latency value, and assigning the buffer size to the one or more audio output devices. The buffer size can be used by the one or more audio output devices to configure a respective buffer.
[0009] Other implementations particularly provide one or more non-transitory computer-readable media and systems configured to implement the methods described above.
[0010] At least one technical advantage of the disclosed technology over existing technologies is that it allows for the dynamic adjustment of the buffer size of satellite devices in a networked audio system based on network conditions. Therefore, when network conditions are low, the buffer size of the satellite devices can be reduced without increasing the risk of them running out of audio data packets to play, while also reducing processing wait time. Conversely, when the network is congested, the buffer size of the satellite devices can be increased as needed to store additional audio data packets for playback. Another technical advantage is that the buffer sizes of all satellite devices in the networked audio system can be synchronized, eliminating the adverse effects on audio playback synchronization caused by mismatched buffer sizes. Furthermore, another technical advantage is that the disclosed technology does not employ complex, resource-intensive algorithms, thus avoiding strain on the processing capabilities of the satellite devices. Instead, the disclosed technology uses only a fraction of the satellite devices' processing resources, allowing more processing power to be devoted to audio processing. Therefore, listeners can enjoy a higher quality listening experience than with conventional technologies. These technical advantages provide one or more technical improvements over existing methods. Attached Figure Description
[0011] To gain a more detailed understanding of the aforementioned features of the various embodiments, the inventive concept briefly outlined above can be described in more specific terms by referring to various embodiments, some of which are illustrated in the accompanying drawings. However, it should be noted that the drawings only show typical embodiments of the inventive concept and should therefore not be considered as limiting the scope, and other equally effective embodiments exist.
[0012] Figure 1 A networked audio system according to one or more aspects of various implementation schemes is shown;
[0013] Figure 2 It is based on one or more aspects of various implementation schemes. Figure 1 Block diagram of the main computing device;
[0014] Figure 3 It is based on one or more aspects of various implementation schemes. Figure 1 A block diagram of a satellite audio output device;
[0015] Figure 4 The normal distribution of waiting time data according to one or more aspects of various implementation schemes is shown;
[0016] Figure 5The normal distribution of waiting time data sorted by maximum descending order according to one or more aspects of various implementation schemes is shown;
[0017] Figure 6 It is based on one or more aspects of various implementation schemes that are possible by Figure 1 A block diagram of the audio buffer application implemented on the main computing device;
[0018] Figure 7 This is a flowchart of method steps for determining the buffer size in a networked audio system, according to one or more aspects of various implementation schemes; and
[0019] Figure 8 It is a flowchart of method steps for adjusting the buffer size in a satellite audio output device, according to one or more aspects of various implementation schemes. Detailed Implementation
[0020] In the following description, numerous specific details are set forth to provide a more thorough understanding of the various implementation schemes. However, it will be apparent to those skilled in the art that these inventive concepts can be practiced without one or more of these specific details.
[0021] Figure 1 A networked audio system 100 configured to implement one or more aspects of various implementation schemes is shown. As shown, the networked audio system 100 includes, but is not limited to, a main computing device 102 and a plurality of satellite audio output devices 110-1 to 110-N. The main computing device 102 is communicatively coupled to the satellite audio output devices 110 via an audio device network 112.
[0022] In some embodiments, the audio device network 112 is a wireless network, such as a Wi-Fi network, an ad-hoc Wi-Fi network, a Bluetooth network, etc., through which the main computing device 102 and the satellite audio output device 110 communicate. In other embodiments, the audio device network 112 is a wired network. Communication in the audio device network 112 can use standard protocols (…). For example Bluetooth, Wi-Fi) or proprietary protocols ( For example (Proprietary protocols associated with a specific manufacturer). For example, the main computing device 102 can communicate with the satellite audio output device 110 via the audio device network 112 using standard or proprietary protocols. As another example, the satellite audio output device 110 can communicate with other satellite audio output devices 110 via the audio device network 112 using standard or proprietary protocols.
[0023] The networked audio system 100 also includes one or more media content services 120, which are communicatively coupled to the main computing device 102 via one or more networks 122. The media content services 120 include those configured to deliver content to the device (…). For example Provide (to main computing device 102) For example (Distribution) one or more computerized services for media content. The media or media content used herein includes, but is not limited to, audio content (…). For example Media content service 120 includes, but is not limited to, audio content (spoken and / or musical audio content, audio content files, streaming audio content, audio tracks of videos, etc.) and / or video content. Examples of media content service 120 include, but are not limited to, Spotify, Apple Music, Pandora, YouTube Music, Tidal, and / or other audio content streaming services. Some other examples of media content service 120 include, but are not limited to, media content streaming services such as digital media content vendors, media servers (local and / or remote), YouTube, Netflix, HBO, and / or other media content streaming services. More generally, media content service 120 includes one or more computer systems for storing and distributing media content. For example Servers, cloud computing systems, networked computing systems, distributed computing systems, etc.
[0024] As described above, the main computing device 102 may be communicatively coupled to the media content service 120 via network 122 to download and / or stream media content from the media content service 120. Network 122 may be any technically feasible type of communication network that allows the main computing device 102 to exchange data with other systems or devices, such as the media content service 120, a server, a cloud computing system, or other networked computing devices or systems. For example, network 122 may include a wide area network (WAN), a local area network (LAN), or a wireless network. For example Wi-Fi networks, cellular data networks, self-organizing networks, and / or the Internet, etc. Communication within these networks can use standard protocols ( For example Bluetooth, Wi-Fi) or proprietary protocols ( For example (Proprietary protocols associated with a specific manufacturer). For example, main computing device 102 can communicate with media content service 120 via network 122 using standard or proprietary protocols. In some embodiments, network 122 includes audio device network 112. In other embodiments, audio device network 112 and network 122 are separate. Although not shown, in some embodiments, satellite audio output device 110 can be communicatively coupled to media content service 120 via network 122.
[0025] Figure 2A block diagram of a main computing device 102, implemented in conjunction with a networked audio system 100 according to one or more aspects of various embodiments, is shown. The main computing device 102 manages audio playback within the networked audio system 100. For example, the main computing device 102 receives audio content from a media content service 120 via a network 122 and transmits the audio content to one or more satellite audio output devices 110 for playback via an audio device network 112. As will be described in more detail below, the main computing device 102 may send one or more additional messages to the satellite audio output devices 110 for managing audio playback within the networked audio system 100. For example, the main computing device 102 may send one or more messages to the satellite audio output devices 110 instructing them to adjust the size of their audio buffers.
[0026] As shown in the figure, the main computing device 102 includes, but is not limited to, one or more processing units 202, a network interface 210, an input / output (I / O) device interface 212, input devices 220, output devices 222, system storage devices 230, and system memory 232. The main computing device 102 also includes interconnects 240 configured to facilitate the transfer of data (such as programming instructions and application data) between the processing units 202, the network interface 210, the I / O device interface 212, the system storage devices 230, and the system memory 232.
[0027] Processing unit 202 can be any technically feasible processing device configured to process data and execute program instructions. For example, processing unit 202 may include one or more central processing units (CPUs), digital signal processors (DSPs), graphics processing units (GPUs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), microprocessors, microcontrollers, other types of processing units, and / or combinations of different processing units. Processing unit 202 may also include a real-time clock (RTC) (not shown), which maintains an estimate of the current time. The estimate of the current time can be expressed in Coordinated Universal Time (UTC), although any other time measurement standard may also be used. Processing unit 202 is configured to retrieve and execute programming instructions stored in system memory 232, such as audio playback application 242 and audio buffer application 250. Similarly, processing unit 202 is configured to store application data ( For example (Software library) and retrieve application data from system memory 232.
[0028] The main computing device 102 may be connected to the audio device network 112 and / or network 122 via network interface 210. For example, the main computing device 102 is connected to the audio device network 112 via network interface 210 to communicate with the satellite audio output device 110. As another example, the main computing device 102 is connected to network 122 via network interface 210 to communicate with the media content service 120. In some embodiments, network interface 210 is hardware, software, or a combination of hardware and software configured to connect to and interface with the audio device network 112 and / or network 122. In some embodiments, network interface 210 facilitates communication via one or more standard protocols and / or proprietary protocols. For example (Bluetooth, proprietary protocols associated with specific manufacturers, etc.) communication with other devices or systems.
[0029] I / O device interface 212 is configured to receive input data from input device 220 and transmit the input data to processing unit 202 via interconnect 240. For example, input device 220 may include one or more buttons, a keyboard, a mouse, a graphical user interface, a touchscreen display, and / or other input devices. I / O device interface 212 is also configured to receive output data from processing unit 202 via interconnect 240 and transmit the output data to output device 222. For example, output device 222 may include one or more of a display device, a touchscreen display, a graphical user interface, and / or other output devices. In some embodiments, main computing unit 102 is an audio output device. In such embodiments, output device 222 includes one or more speakers 252 configured to play audio content. In some embodiments, one or more satellite audio output devices 110 are coupled to main computing unit 102 via I / O device interface 212.
[0030] System storage device 230 may include non-volatile storage devices for applications, software modules, and data, and may include fixed or removable disk drives, flash memory devices, and CD-ROMs, DVD-ROMs, Blu-ray, HD-DVDs, or other magnetic storage devices, optical storage devices, solid-state storage devices, etc. System storage device 230 may be located wholly or partially in a remote storage system referred to herein as the "cloud," and accessed via connections such as audio device network 112 and / or network 122. System storage device 230 is configured to store non-volatile data, such as files (…). For example (Audio files, video files, subtitles, application files, software libraries, etc.)
[0031] System memory 232 may include random access memory (RAM) modules, flash memory cells, or any other type of memory cell or combination thereof. One or more of processing unit 202, network interface 210, and I / O device interface 212 are configured to read data from system memory 232 and write data to system memory 232. System memory 232 includes various software programs and modules executable by processing unit 202. For example Operating system, one or more applications) and application data associated with the software program ( For example (Data loaded from system storage device 230). For example, as will be described in more detail below, system storage 232 includes an audio playback application 242 and an audio buffer application 250. In some embodiments, the audio playback application 242 and the audio buffer application 250 are combined into a single application.
[0032] When executed by processing unit 202, audio playback application 242 manages audio playback in networked audio system 100. For example, audio playback application 242 retrieves audio content from media content service 120 via network 122 and distributes the audio content to satellite audio output device 110 for playback via audio device network 112. In some embodiments, audio playback application 242 uses one or more suitable methods to synchronize audio playback on satellite audio output device 110. In some embodiments, audio playback application 242 also sends playback timing information and / or other information associated with audio playback (such as audio channel allocation or volume control) to satellite audio output device 110.
[0033] As will be described in more detail below, the audio buffer application 250 manages the buffer size of the audio buffers included in the satellite audio output device 110 when executed by the processing unit 202. In operation, the audio buffer application 250 determines the dynamic buffer size of the audio buffers included in the satellite audio output device 110 based on one or more conditions of the audio device network 112. For example, the audio buffer application 250 determines the dynamic buffer size based on latency data associated with the latency or transmission delay of messages sent by the main computing device 102 to the satellite audio output device 110 via the audio device network 112. After determining the dynamic buffer size, the audio buffer application 250 allocates the dynamic buffer size to the satellite audio output device 110 via the audio device network 112.
[0034] The audio buffer application 250 also manages the retrieval of latency data for determining the dynamic buffer size of the audio buffers included in the satellite audio output device 110. As will be described in more detail below, the audio buffer application 250 requests latency data from the satellite audio output device 110 via the audio device network 112. In response to receiving a request from the audio buffer application 250, the corresponding satellite audio device 110 sends its latency data to the audio buffer application 250, which then stores the latency data as latency data 262 in a database 260 in the system memory 232. The latency data received from the corresponding satellite audio output device 110 includes one or more latency data samples associated with the latency or transmission delay of messages sent by the main computing device 102 and the corresponding satellite audio output device 110. Each latency data sample is associated with a specific message sent by the main computing device 102 and received by the satellite audio output device 110. Furthermore, each latency data sample includes a latency value indicating the transmission delay of the message. The message transmission delay is the time difference between the time the main computing device 102 sends the message and the time the corresponding satellite audio output device 110 receives the message. The latency data sample may also include a timestamp indicating the time when the satellite audio output device 110 generates the latency data sample and / or the time when the satellite audio output device 110 receives the message.
[0035] In some implementations, the audio buffer application 250 requests the satellite audio output device 110 periodically ( Example For example The audio buffer application 250 provides its respective latency data (every minute, every 5 minutes, every half hour, every hour, etc.). In some implementations, the audio buffer application 250 requests the satellite audio output device 110 to provide its respective latency data automatically. In some implementations, the audio buffer application 250 requests the satellite audio output device 110 to provide its respective latency data in response to a triggering event. For example, in response to detecting that traffic in the audio device network 112 exceeds a threshold, in response to detecting that traffic in the audio device network 112 has fallen below a threshold, in response to detecting that the amount of time taken by the satellite audio output device 110 to respond to the main computing device 102 exceeds a threshold, and / or in response to some other triggering event, the audio buffer application 250 may request the satellite audio output device 110 to provide its latency data.
[0036] In some implementations, the audio buffer application 250 determines the latency associated with a message sent by the host computing device 102 to the satellite audio output device 110 without requesting the satellite audio output device 110 to provide its respective latency data. In such an implementation, the audio buffer application 250 determines the latency associated with any message sent by the host computing device 102 to the satellite audio output device 110 via the audio device network 115. For example, the audio buffer application 250 may timestamp each message sent by the host computing device 102 to the satellite audio output device 110 using the time the message was sent. In such an example, the satellite audio output device 110 receives a timestamped message from the host computing device 102 and sends a response message to the host computing device 102. The response message includes a first timestamp indicating the time the host computing device 102 sent the message and a second timestamp indicating the time the satellite audio output device 110 received the message sent by the host computing device 102. Therefore, the audio buffer application 250 can determine the waiting time of the message sent by the main computing device 102 to the satellite audio output device 110 based on the difference between the first timestamp and the second timestamp included in the response message sent by the satellite audio output device 110. Then, the audio buffer application 250 can store the determined message waiting time as waiting time data 262 in the database 260.
[0037] In some implementations, each satellite audio output device 110 sends a response message to each message received from the main computing device 102, the response message including a first timestamp indicating the time when the main computing device 102 sent the message and a second timestamp indicating the time when the satellite audio output device 110 received the message. Therefore, in such an implementation, the audio buffer application 250 determines the waiting time for each message sent by the main computing device 102 based on the response messages received from the satellite audio output device 110. In some implementations, each satellite audio output device 110 sends a response message only for some messages received from the main computing device 102, the response message including a first timestamp indicating the time when the main computing device 102 sent the message and a second timestamp indicating the time when the satellite audio output device 110 received the message. In such an implementation, the audio buffer application 250 determines the corresponding waiting time for the messages sent by the main computing device 102, and for said messages, the satellite audio output device 110 sends a response message. In other implementations, the satellite audio output device 110 responds to receiving certain types of messages from the main computing device 102 (…). Figure 3In some embodiments, the audio buffer application 250 determines the corresponding latency for certain types of messages sent by the main computing device 102, for which the satellite audio output device 110 sends a response message. In some embodiments, the satellite audio output device 110 determines the latency of a message received from the main computing device 102 and sends a response message including the message latency to the main computing device 102. Therefore, in such embodiments, the audio buffer application 250 determines the message latency as the latency value included in the response message. In some embodiments, the audio buffer application 250 determines the latency of a message sent by the satellite audio output device 110 via the audio device network 115. In such embodiments, the message sent by the satellite audio output device 110 includes a timestamp indicating the time the message was sent. For example, the audio buffer application 250 may determine the latency of a message sent by the satellite audio output device 110 based on the difference between the time the satellite audio output device 110 sends the message and the time the audio buffer application 250 receives the message.
[0038] As described above, in some embodiments, system memory 232 also includes one or more databases 260 loaded from system storage device 230 into system memory 232. Database 260 includes application data, user data, media content, and / or other data associated with one or more applications executable by processing unit 202. In the illustrated example, database 260 also includes latency data 262. Latency data 262 includes latency data samples received from satellite audio output device 110. Audio buffer application 250 receives one or more latency data samples from satellite audio output device 110 and stores the received latency data samples as latency data 262 in database 260. Audio buffer application 250 then uses this latency data 262 to determine the dynamic buffer size of satellite audio output device 110.
[0039] Figure 1 A block diagram is shown of a satellite audio output device 110 that can be implemented in conjunction with a networked audio system 100 according to one or more aspects of various embodiments. For example, the satellite audio output device 110 is used to implement... Figure 1 Any satellite audio output device 110-1 to 110-N. In some embodiments, satellite audio output device 110 is used to implement Figure 1The main computing device 102 is located in the satellite audio output device 110. In such an embodiment, the satellite audio output device 110 is further configured to perform one or more of the actions described herein as being performed by the main computing device 102.
[0040] In operation, the satellite audio output device 110 plays audio content received from the main computing device 102 via the audio device network 112. For example, the main computing device 102 sends a message including one or more audio content data packets to the satellite audio output device 110, and the satellite audio output device 110 plays or outputs the audio content. The satellite audio output device 110 outputs audio content in a manner synchronized or nearly synchronized with one or more other satellite audio output devices 110 and / or the main computing device 102 coupled to the networked audio system 100. For example, if the satellite audio output device 110 is used to implement... For example If satellite audio output device 110-1 is used, then satellite audio output device 110-1 outputs audio content in a manner synchronized or nearly synchronized with one or more of satellite audio output devices 110-2 to 110-N and / or the main computing device 102. In some embodiments, satellite audio output device 110 outputs one or more separate channels of audio content received from the main computing device 102.
[0041] As shown in the figure, the satellite audio output device 110 includes, but is not limited to, one or more processing units 302, a network interface 310, an I / O device interface 312, an input device 320, a speaker 322, an output device 330, a system memory 332, and audio processing circuitry 340. The satellite audio output device 110 also includes interconnects 342 configured to facilitate the transfer of data (such as programming instructions and application data) between the processing unit 302, the network interface 310, the I / O device interface 312, the system memory 332, and the audio processing circuitry 340.
[0042] Processing unit 302 can be any technically feasible processing device configured to process data and execute program instructions. For example, processing unit 302 may include one or more CPUs, DSPs, GPUs, ASICs, FPGAs, microprocessors, microcontrollers, other types of processing units, and / or combinations of different processing units. Processing unit 302 may also include an RTC (not shown) that maintains an estimate of the current time. The estimate of the current time may be expressed in UTC, although any other time measurement standard may also be used. In some embodiments, the RTC included in processing unit 302 is synchronized with the RTC included in processing unit 202 of main computing device 102. Processing unit 302 is configured to retrieve and execute programming instructions stored in system memory 332, such as audio playback application 350, wait time application 352, and audio buffer application 360. Similarly, processing unit 302 is configured to store application data (e.g., software libraries) and retrieve application data from system memory 332.
[0043] Satellite audio output device 110 can be connected to audio device network 112 via network interface 310. For example, satellite audio output device 110 connects to audio device network 112 via network interface 310 to communicate with main computing device 102 and / or other satellite audio output devices 110. In some embodiments, network interface 310 is hardware, software, or a combination of hardware and software configured to connect to and interface with audio device network 112. In some embodiments, network interface 310 facilitates communication via one or more standard protocols and / or proprietary protocols (…). For example (e.g., Bluetooth, proprietary protocols associated with specific manufacturers, etc.) for communication with other devices or systems. In some implementations, the satellite audio output device 110 is also connected to the network 122 via the network interface 310.
[0044] I / O device interface 312 is configured to receive input data from input device 320 and send the input data to processing unit 302 via interconnect 342. For example, input device 320 may include one or more buttons, knobs, keyboards, mice, graphical user interfaces, touch screen displays, and / or other input devices. I / O device interface 312 is also configured to receive output data from processing unit 302 and / or audio processing circuitry 340 via interconnect 342 and send the output data to speaker 322 and / or other output devices 330. Speaker 322 is configured to play or output audio content received from main computing device 102. For example, audio processing circuitry 340 processes audio content received from main computing device 102 and sends the processed audio content to speaker 322 for playback via interconnect 342 and I / O device interface 312. Other output devices 330 may include one or more of light-emitting diode (LED) indicators, display devices, touch screen displays, graphical user interfaces, and / or other output devices.
[0045] System memory 332 may include random access memory (RAM) modules, flash memory cells, or any other type of memory cell or combination thereof. One or more of processing unit 302, network interface 310, and I / O device interface 312 are configured to read data from system memory 332 and write data to system memory 332. System memory 332 includes various software programs and modules executable by processing unit 302. For example Operating system, one or more applications) and application data associated with the software program ( For example (Data loaded from system storage device 230). For example, as will be described in more detail below, system storage 332 includes an audio playback application 350, a wait time application 352, an audio buffer application 360, and an audio buffer 362. In some embodiments, one or more of the audio playback application 350, the wait time application 352, and the audio buffer application 360 are combined into a single application.
[0046] In some embodiments, the satellite audio output device 110 also includes a system storage device. In such embodiments, the system storage device includes non-volatile storage for applications, software modules, and data. The system storage device may include fixed or removable disk drives, flash memory devices, and CD-ROMs, DVD-ROMs, Blu-ray, HD-DVDs, or other magnetic storage devices, optical storage devices, solid-state storage devices, etc. In some instances, the system storage device is located wholly or partially in a remote storage system referred to herein as the “cloud” and is accessed via connections such as audio device network 112 and / or network 122. The system storage device is configured to store non-volatile data, such as files (e.g., audio files, video files, subtitles, application files, software libraries, etc.).
[0047] The audio playback application 350 manages the audio playback of the satellite audio output device 110 when executed by the processing unit 302. Managing the audio playback of the satellite audio output device 110 may include, but is not limited to, managing the receipt of audio content from the main computing device 102, storing the received audio content in an audio buffer 362 before playback, providing the audio content stored in the audio buffer 362 to the audio processing circuit 340 for processing in preparation for playback, and / or managing the transmission of the processed audio content output by the audio processing circuit 340 to the speaker 322 via the interconnect 342 and / or the I / O device interface 312. For example, the audio playback application 350 stores the received audio content in the audio buffer 362 and / or retrieves the audio content stored in the audio buffer 362 for processing based on playback time information and / or other information associated with the playback of the audio content received from the main computing device 102. As another example, the audio playback application 350 manages the processing of audio content via the audio processing circuit 340 and / or the transmission of processed audio content from the audio processing circuit 340 to the speaker 322 based on playback time information and / or other information associated with the playback of audio content received from the main computing device 102.
[0048] The audio processing circuit 340 can be any technically feasible processing circuit configured to process audio content for playback by the speaker 322. For example, the audio processing circuit 340 may include one or more DSPs, one or more digital-to-analog (DAC) converters, one or more filters, and / or audio amplifiers. In operation, the audio processing circuit 340 processes the audio content stored in the audio buffer 362 for playback by the speaker 322. For example, based on one or more instructions from the audio playback application 350, the audio processing circuit processes the audio content stored in the audio buffer 362 and transmits the processed audio content to the speaker 322 for playback via interconnect 342 and I / O device interface 312. Processing the audio content may include, but is not limited to, converting digitally stored audio content to analog format via a DAC, applying one or more filters to the audio content, and / or amplifying the audio content.
[0049] The latency application 352, when executed by the processing unit 302, determines the latency or transmission delay of messages (or data packets) received by the satellite audio output device 110 from the main computing device 102 via the audio device network 112. For example, when the main computing device 102 sends a message (such as a message containing one or more audio content data packets), the main computing device 102 timestamps the message with the time it sent the message. When the satellite audio output device 110 receives a message sent by the main computing device 102, the latency application 352 timestamps the received message with the time it received the message. Then, the latency application 352 determines the latency or transmission delay of the message sent by the main computing device 102 based on the message's transmission time and reception time.
[0050] In some implementations, the latency application 352 determines the message latency as the time difference between the time the main computing device 102 sends the message and the time the satellite audio output device 110 receives the message. For example, in such an implementation, if a message is sent by the main computing device 102 at 10:01:29.100 and received by the satellite audio output device 110 at 10:01:29.250, the latency application 352 determines the message latency, or transmission delay, to be 150 milliseconds (ms). In some implementations, the latency application 352 also considers the amount of time taken to process the message received from the main computing device 102 when determining the message latency. In such an implementation, the latency application 352 adds the processing time to the determined time difference between the time the main computing device 102 sends the message and the time the satellite audio output device 110 receives the message. Referring to the example above, if we assume that the message is sent by the main computing device 102 at 10:01:29.100 and received by the satellite audio output device 110 at 10:01:29.250, and the message requires an additional 5 ms for processing by the satellite audio output device 110, then the waiting time application 352 determines the message waiting time to be 155 ms. The amount of time used to process the message may include one or more of the following: the time taken by the processing unit 302 to process the message, the time taken by the audio playback application 350 to process the message, the time taken by the waiting time application 352 to process the message, the time taken for the audio content included in the message to move through the audio buffer 362, the time taken by the audio processing circuit 340 to process the audio content included in the message, the time difference between receiving the message and the speaker 322 playing the audio content included in the message, and / or some other amount of time associated with processing the message at the satellite audio output device 110.
[0051] In some implementations, the latency application 352 determines the latency for each message received from the main computing device 102. In some implementations, the latency application 352 determines the latency for only some of the messages received from the main computing device 102. In some implementations, the latency application 352 periodically determines the latency for messages received from the main computing device 102. For example, the latency application 352 determines the latency for every ten messages received from the main computing device 102, the latency for every hundred messages received from the main computing device 102, the latency for every thousand messages received from the main computing device 102, and / or determines the latency for messages received from the main computing device 102 at some other interval. In some implementations, the latency application 352 determines the latency for messages received from the main computing device 102 in an organized manner.
[0052] After determining the waiting time for a message received from the main computing device 102, the waiting time application 352 generates a waiting time data sample including the determined waiting time value and stores the waiting time data sample in the system memory 332 of the satellite audio output device 110 and / or some other system storage device. In some embodiments, the waiting time data sample also includes a timestamp indicating the time when the waiting time data sample was generated and / or indicating the time when the waiting time application 352 received the message associated with the waiting time data sample.
[0053] At a given time, one or more latency data samples generated by the latency application 352 are stored in the system memory 332 and / or some other system storage device of the satellite audio output device 110. In some embodiments, in response to receiving a request for latency data from the main computing device 102, the latency application 352 sends one or more latency data samples to the main computing device 102. In some embodiments, the latency application 352 sends one or more latency data samples to the main computing device 102 even if no request for latency data is received from the main computing device 102. In such embodiments, the latency application 352 periodically ( Figure 1 The latency data sample is sent to the main computing device 102 every minute, every 5 minutes, every half hour, every hour, etc., and / or self-organized. In some embodiments, the latency application 352 sends one or more latency data samples to the main computing device 102 in response to a triggering event. For example, the latency application 352 sends one or more latency data samples to the main computing device 102 in response to detecting that traffic in the audio device network 112 exceeds a threshold, in response to detecting that traffic in the audio device network 112 has dropped below a threshold, in response to determining that the latency of a message received from the main computing device 102 exceeds a threshold, and / or in response to some other triggering event. In some embodiments, after sending one or more latency data samples to the main computing device 102, the latency application 352 deletes one or more latency data samples from the system memory 332 and / or some other system storage device of the satellite audio output device 110.
[0054] As described above regarding audio buffer application 250, in some embodiments, satellite audio output device 110 sends a response message for some or all messages received from main computing device 102, even if the received messages do not explicitly request wait time data. In such embodiments, in response to receiving a message from main computing device 102 including a timestamp indicating the time when main computing device 102 sent the message, wait time application 352 sends a response message to main computing device 102. In some examples, the response message includes a first timestamp indicating the time when main computing device 102 sent the message and a second timestamp indicating the time when wait time application 352 received the message from main computing device 102. In such examples, audio buffer application 250 determines the message wait time based on the first and second timestamps included in the response message. In other examples, wait time application 250 determines the message wait time sent by main computing device 102 based on the timestamp indicating the time when main computing device 102 sent the message. In such examples, the response message sent by wait time application 352 includes a determined message wait time.
[0055] The audio buffer application 360 manages the size of the audio buffer 362 when executed by the processing unit 302. The audio buffer application 360 configures the size of the audio buffer 362 based on a dynamic buffer size determined by the audio buffer application 250 of the main computing device 102. For example, the audio buffer application 360 receives a message including the dynamic buffer size from the audio buffer application 250 of the main computing device 102 via the audio device network 112, and then configures the size of the audio buffer 362 to the dynamic buffer size.
[0056] Audio buffer 362 stores data packets or samples of audio content received from main computing device 102, which are then processed by audio processing circuitry 340 and / or played by speaker 322. The size of audio buffer 362 can be increased to store more audio content packets or decreased to store fewer. As described above, due to the varying network latency and / or jitter in audio device network 112 over time, it is difficult to predict an appropriate buffer size. For example, if audio buffer 362 is too small, satellite audio output device 110 may run out of audio data packets to play when latency and / or jitter in audio device network 112 are relatively high. Conversely, if audio buffer 362 is too large, the time taken for satellite audio output device 110 to process and play the audio data packets stored in audio buffer 362 increases. Therefore, this increased processing time can cause playback by satellite audio output device 110 to become out of sync with audio playback by other satellite audio output devices 110 and / or main computing device 102 coupled to networked audio system 100.
[0057] Therefore, to prevent the aforementioned drawbacks associated with audio buffers 362 being too small or too large, the audio buffer application 250 of the main computing device 102 manages the buffer size of each corresponding audio buffer 362 included in the satellite audio output device 110 coupled to the networked audio system 100. For example, regarding Example As shown in the example, the audio buffer application 250 of the main computing device 102 manages the size of each corresponding audio buffer 362 included in the satellite audio output devices 110-1 to 110-N.
[0058] As described above, the audio buffer application 250 manages the size of the various audio buffers 362 included in the satellite audio output device 110 based on conditions (such as jitter and / or latency) in the audio device network 112. Specifically, the audio buffer application 250 determines the dynamic buffer size of the audio buffers 362 included in the satellite audio output device 110 based on the latency associated with the transmission of a message from the main computing device 102 to the satellite audio output device 110, and allocates the dynamic buffer size to the satellite audio output device 110 after determining the dynamic buffer size. For example, the audio buffer application 250 determines the dynamic buffer size based on latency data 262, which includes multiple latency data samples received from the satellite audio output device 110.
[0059] As described above, each latency data sample is associated with a specific message sent by the main computing device 102 and received by the corresponding satellite audio output device 110. The latency data sample includes a time indicating the latency or transmission delay associated with the transmission of the message from the main computing device 102 to the satellite audio output device 110 via the audio device network 112. As described above, in some embodiments, the latency value associated with the transmission of the message from the main computing device 102 to the satellite audio output device 110 is equal to the difference between the time the main computing device 102 sends the message and the time the satellite audio output device 110 receives the message. In other embodiments, as described above, the latency value associated with the transmission of the message from the main computing device 102 to the satellite audio output device 110 further includes the time associated with processing the message at the satellite audio output device 110. Furthermore, each latency data sample may include information about which satellite audio output device 110 (… For example For example Instructions for generating waiting time data samples by satellite audio output devices 110-1, 110-2, etc., timestamps indicating the time of generating waiting time data samples, and / or timestamps indicating the time when satellite audio output devices 110 receive messages associated with waiting time data values.
[0060] In some implementations, the audio buffer application 250 determines the dynamic buffer size for the audio buffer 362 included in the satellite audio output device 110 based on an aggregated latency value determined according to multiple latency data samples. In some implementations, the audio buffer application 250 determines the dynamic audio buffer size based on one or more of the following: the sampling rate at which the audio data packets stored in the audio buffer 362 are sampled or output by the satellite audio output device 110, the number of audio channels in the audio content being played by the satellite audio output device 110, the bit depth of the audio data packets stored in the audio buffer 362, and / or the aggregated latency value determined according to multiple latency data samples.
[0061] For example, audio buffer application 250 can use Equation 1 as shown below to determine the dynamic buffer size of audio buffer 362 included in satellite audio output device 110:
[0062]
[0063] Wherein the rate is the sampling rate at which the audio data packets stored in the audio buffer 362 are sampled and / or output by the satellite audio output device 110. For example 44.1 kHz, 48 kHz, etc.), the number of channels refers to the number of audio channels included in the audio content being played by the satellite audio output device 110.For example Stereo audio has 2 channels, surround audio has 5.1 channels, etc. Bit depth is the number of bits captured in each sample of the audio data packet. For example (10-bit, 16-bit, 24-bit, 32-bit, etc.), waiting time 聚合 It is the aggregated waiting time determined based on multiple waiting time data samples. For example 100ms, 150ms, etc.
[0064] The audio buffer application 250 can determine the number of audio channels in the audio content being played by the satellite audio output device 110 from the audio playback application 242, which manages audio playback in the networked audio system 100. Additionally, the audio buffer application 250 can determine the sampling rate and / or bit depth of the audio content being played by the satellite audio output device 110 based on one or more of the information provided by the audio playback application 242, the device specifications of the satellite audio output device 110, and / or parameters of the audio content being played by the satellite audio output device 110.
[0065] Audio buffer application 250 determines an aggregated wait time value for calculating the dynamic buffer size based on wait time values included in a plurality of wait time data samples. In some implementations, audio buffer application 250 determines the aggregated wait time value as the average of the wait time values included in the plurality of wait time data samples. Therefore, in such implementations, audio buffer application 250 determines the aggregated wait time value by dividing the sum of the wait time values included in the plurality of wait time data samples by the number of wait time data samples. However, for instances where audio buffer application 250 simply determines the aggregated wait time value as the average of the wait time values included in the plurality of wait time data samples, the dynamic buffer size determined based on this aggregated wait time value can result in a buffer size that is too small and / or too large.
[0066] For example, most of the wait time values in the wait time data sample are relatively small ( For example For instances less than 10 ms, the aggregated wait time value, which is determined as the average of the wait time values, can be compared with relatively large ( For example The latency values (greater than 100 ms) are significantly different. Therefore, regarding this example aggregate latency value, the audio buffer application 250 can determine, based on the aggregate latency value, a dynamic buffer size that is too small to account for frequent large latency or transmission delays in messages sent from the main computing device 102 to the satellite audio output device 110 via the audio device network 112. Therefore, a significant amount of audio data may be lost during media playback by the networked audio system 100.For example (Greater than 1%). For example, losing 1% of the audio data during a 90-minute movie playback would mean losing 54 seconds of audio data during the movie. Such significant audio data loss during media content playback is unacceptable.
[0067] As another example, the waiting time data sample includes waiting time values that are relatively large ( For example Instances of outliers (greater than 500 ms) were identified as the aggregated wait time value representing the average of the wait time values and the relatively small wait time values representing the majority of the wait time values in the wait time data sample. Figure 4 There is a significant difference (less than 10 ms). Therefore, regarding this example aggregated wait time value, the audio buffer application 250 can determine a dynamic buffer size that is larger than necessary based on the aggregated wait time value. Therefore, when the audio buffer 362 included in the satellite audio output device is configured to have an excessively large size, the audio content played by the satellite audio output device 110 may become out of sync due to the increased processing time caused by the excessively large buffer size.
[0068] In some implementations, the audio buffer application 250 determines an aggregated latency value based on the average of latency values included in a plurality of latency data samples and a standard deviation factor from the average of the latency values included in the plurality of latency data samples. In such an implementation, the audio buffer application 250 determines the aggregated latency value as the sum of the average of the latency values and a multiple of the standard deviation from the average. For example, if assuming the average latency values are 10 ms and the standard deviation from the average is 20 ms, the audio buffer application 250 determines the aggregated latency value as the sum of multiples of 10 ms and 20 ms. In this example, if the audio buffer application 250 applies a 2-sigma rule when determining the aggregated latency value, the audio buffer application 250 determines the aggregated latency value to be 50 ms. Continuing this example, if the audio buffer application 250 applies a 3-sigma rule when determining the aggregated latency value, the audio buffer application 250 determines the aggregated latency value to be 70 ms.
[0069] Figure 4An example normal distribution 400 of wait time values included in a sample of wait time data is shown. These wait time data samples may be generated, for example, by a satellite audio output device 110 and used by an audio buffer application 250 to determine the dynamic buffer size of the audio buffer 362 included in the satellite audio output device 110. Those skilled in the art will understand that the wait time data samples included in the normal distribution 400 are merely a non-limiting example of sample wait time data that may be generated by the satellite audio output device 110 and / or used by the audio buffer application 250 to determine the dynamic buffer size of the audio buffer 362 included in the satellite audio output device 110.
[0070] As shown by the normal distribution 400, the mean waiting time of the sample data is approximately 6.01 ms, and one standard deviation from the mean waiting time is approximately 20.26 ms. Furthermore, in For example In the example shown, the 3-sigma rule is applied to the normal distribution 400 to determine a latency value of 66.78 ms that differs from the mean latency value of 6.01 ms by 3 standard deviations. In other words, applying the 3-sigma rule to the normal distribution 400 involves determining a latency value that deviates from the mean latency value by 3 standard deviations. In this example, it is assumed that the audio buffer application 250 determines the aggregate latency value to be 66.78 ms.
[0071] Continuing this example, when the audio buffer application 250 determines the dynamic buffer size based on an aggregated latency value of 66.78 ms (e.g., using Equation 1) and allocates the determined dynamic buffer size to the satellite audio output device 110, the satellite audio output device 110 loses approximately 1.8% of the audio data during media content playback. Losing 1.8% of the audio data during the playback of a 90-minute movie equates to losing 102 seconds of audio over the entire movie playback period. As determined in this example, losing 102 seconds of audio data is unacceptable for a high-quality listening experience. In this example, the significant loss of audio data during media content playback can be attributed to jitter and / or latency in the audio device network 112, which sometimes results in message latency significantly greater than ( For example An aggregated wait time value (greater than 100 ms) is used to determine the size of the dynamic buffer.
[0072] Therefore, in order to better account for large wait time values included in the wait time data sample when determining the dynamic buffer size, in some implementations, the audio buffer application 250 determines the aggregate wait time value by using a weighted average function that gives greater weight to larger wait time values included in the wait time data sample. In such an implementation, the audio buffer application 250 sorts the wait time values included in the wait time data sample in descending order and uses a weighted average function to determine the aggregate wait time value based on the N largest wait time values included in the descending sorted list.
[0073] In some implementations, the audio buffer application 250 determines the number N of maximum latency values based on one or more of the following: the total number of latency data samples generated by the satellite audio output devices 110, the number of satellite audio output devices 110 coupled to the networked audio system 100, the amount of jitter and / or congestion detected in the audio device network 112, and / or some other parameters of the networked audio system 100. In some implementations, the audio buffer application 250 determines the maximum latency value based on the total number D of devices coupled to the networked audio system 100. For example The number of combinations of the main computing device 102 and the satellite audio output device 110) determines N. For example, the audio buffer application 250 can determine N by multiplying the total number of devices D by a scalar value ( Figure 5 N can be determined by values such as 5, 10, 20, etc. In other implementations, N can be any value determined by the audio buffer application 250, such as, but not limited to, 5, 10, 50, 200, 500, 1000, etc.
[0074] For example, audio buffer application 250 can use Equation 2 as follows to determine the aggregate wait time value used to determine the dynamic buffer size:
[0075]
[0076]
[0077] Where N is the number of maximum wait time values used to calculate the aggregate wait time value, and W is... i It is the waiting time of each of the N maximum waiting time values included in the calculation of the aggregate waiting time value. i The weights are shown in the figure. Equation 2 is the weighted average formula, where the corresponding weight values W are... i With the corresponding waiting time value, the waiting time i Multiply or assign values. Additionally, each weight value W... i The sum of them equals 1.
[0078] In some implementations, the corresponding weight value W i With weight value W i Multiplied by the corresponding waiting time value waiting time i The size is proportional. For example, audio buffer application 250 will use the maximum weight value W. i Assign to the maximum waiting time value i The minimum weight value W i Assign to minimum waiting time value i In some implementations, the audio buffer application 250 randomly generates weight values W. i And / or randomly assign the weight value to the waiting time value included among the N maximum waiting time values used to calculate the aggregate waiting time value. i In some implementations, the audio buffer application 250 assigns different weight values W i Assigned to each of the N maximum wait times included in the calculation of the aggregate wait time value. i In some implementations, the audio buffer application 250 will use the same weight value W i Assign waiting time values to more than one i .
[0079] In some implementations, the audio buffer application 250 assigns a first weight value W1 to the maximum wait time value wait time 1 included among the N maximum wait time values used to calculate the aggregate wait time value, and assigns a second weight value W... n The waiting time is assigned to each remaining waiting time value included in the N maximum waiting time values used to calculate the aggregate waiting time value. i For example, the audio buffer application 250 can use Equation 3 as follows to determine the maximum wait time value among the N wait time values assigned. max Weight value W1:
[0080]
[0081] Among them, waiting time 平均数 It is used to calculate the average of N largest wait time values for aggregate wait time. std It is the standard deviation of the average of the N largest wait time values used to calculate the aggregate wait time value, and the wait time... maxThis is the largest wait time value included among the N largest wait time values used to calculate the aggregate wait time value. In a non-limiting example, W1 is determined to have a value of 0.636. However, those skilled in the art will understand that 0.636 is merely a non-limiting example of the value of the first weight W1. In other non-limiting examples, the value of the first weight W1 is less than 0.5, greater than 0.5, in the range of 0.6 to 0.7, less than 0.75, or some other value. Equation 3 also includes a variable a, which is the number of standard deviations from the mean of the N largest wait time values. In some implementations, the wait time is based on the standard deviation. std The size of 'a' is determined and / or based on the number N of wait times used to determine the aggregate wait time value. In some implementations, 'a' is selected according to one or more settings of the audio buffer application 250. The value of 'a' can be any desired number, such as, but not limited to, 0.5, 1, 1.5, 2, 3, 4, or some other number.
[0082] Returning to the reference audio buffer, application 250 assigns the first weight value W1 to the maximum wait time value included among the N maximum wait time values used to calculate the aggregate wait time value. max and the second weight value W n For each remaining wait time value included in the N maximum wait time values used to calculate the aggregate wait time value, the audio buffer application 250 can use the following Equation 4 to determine the second weight value W for the remaining wait time values included in the N wait time values. n :
[0083]
[0084] Where W1 refers to the maximum waiting time value among the N maximum waiting time values used to calculate the aggregate waiting time value. max The first weight value.
[0085] Figure 5 An example normal distribution 500 is shown for the N largest descending order of wait time values included in the wait time data sample. Figure 5 The latency data sample shown may be generated, for example, by the satellite audio output device 110 and used by the audio buffer application 250 to determine the dynamic buffer size of the audio buffer 362 included in the satellite audio output device 110. Those skilled in the art will understand that the latency data sample included in the normal distribution 500 is merely a non-limiting example of sample latency data that may be generated by the satellite audio output device 110 and / or used by the audio buffer application 250 to determine the dynamic buffer size of the audio buffer 362 included in the satellite audio output device 110.
[0086] As shown by the normal distribution 500, the average waiting time of the N maximum waiting time values included in the waiting time data sample is approximately 134.32 ms, and one standard deviation from the average waiting time of the N maximum waiting time values is approximately 41.72 ms. Furthermore, in Figure 4 In the example shown, the 2-sigma rule is applied to a normal distribution 500 to determine a wait time value of 217.76 ms that differs from the mean wait time value of 134.32 ms by 2 standard deviations. In other words, applying the 2-sigma rule to a normal distribution 500 involves determining a wait time value that deviates from the mean wait time of the N largest wait time values by 2 standard deviations.
[0087] In this example, it will be assumed that the audio buffer application 250 determines the aggregated latency value using equations 2 to 4 based on the N maximum latency values of the latency data sample shown by the normal distribution 500. Furthermore, in this example, it will be assumed that the audio buffer application 250 uses the value 2 for variable a included in equation 3. After determining the aggregated latency value in this example, the audio buffer application 250 determines the dynamic buffer size based on the aggregated latency value, for example, using equation 1, and allocates the dynamic buffer size to the satellite audio output device 110. When the satellite audio output device 110 plays media content using the audio buffer 362 configured with the dynamic buffer size determined in this example, the satellite audio output device loses only approximately 0.04% of the audio data during media content playback. Losing 0.04% of the audio data during the playback of a 90-minute movie is equivalent to losing only 2 seconds of audio data during the entire movie playback. For example Compared to the example (where 102 seconds of audio data were lost during the playback of a 90-minute movie), losing only 2 seconds of audio data is a significant improvement and acceptable for a high-quality listening experience. Therefore, when the dynamic buffer size is determined based on an aggregated wait time value that is weighted more heavily for larger wait time values included in the wait time data samples generated by the satellite audio output device 110, the satellite audio output device 110 operating with an audio buffer 362 of the dynamic buffer size can play audio content synchronously without losing a large amount of audio data.
[0088] During the operation of the networked audio system 100, conditions in the audio device network 112 can change over time. Therefore, a first amount of jitter and / or delay in the audio device network 112 at a first point in time can differ from a second amount of jitter and / or delay in the audio device network 112 at a second point in time. Thus, when the audio buffer application 250 determines the dynamic buffer size based on latency data samples generated by the satellite audio output device 110, the older latency data samples generated by the satellite audio output device 110 ( For example Waiting time data samples generated 5 minutes or more ago may no longer be relevant to the current conditions of the audio device network 112. Therefore, when determining the aggregated waiting time value and / or the dynamic buffer size of the audio buffer 362 included in the satellite audio output device 110, the audio buffer application 250 does not use data earlier than the time threshold ( For example Waiting time data samples (30 seconds, 1 minute, 5 minutes, 10 minutes, etc.). In some implementations, the audio buffer application 250 also discards waiting time data samples earlier than the time threshold. For example, the audio buffer application 250 deletes waiting time data samples earlier than the time threshold from the waiting time data 262 stored in the database 260.
[0089] For example, if there is currently a small amount of jitter and / or delay in the audio device network 112, the satellite audio output device 110 at some point in the past ( For example Waiting time data samples generated (5 minutes or more) (at which time there is significant jitter in the audio device network 112) no longer reflect the current conditions of the audio device network 112. Therefore, the audio buffer application 250 should not use these samples to determine the aggregated waiting time value and / or the dynamic buffer size. Thus, in this example, when determining the aggregated waiting time value and / or the dynamic buffer size of the audio buffer 362 included in the satellite audio output device 110, the audio buffer application 250 discards and does not use data generated earlier than the time threshold. For example A 5-minute wait time data sample was used to avoid determining the appropriate audio device network 112 based on previous ( Figure 6 (5 minutes ago) Dynamic buffer size for congestion conditions.
[0090] Furthermore, since the conditions of the audio device network 112 can change over time, the audio buffer application 250 frequently updates or determines new values for the dynamic buffer size of the audio buffer 362 included in the satellite audio output device 110. In some embodiments, the audio buffer application 250 periodically ( Figure 6The dynamic buffer size is updated every 30 seconds, every minute, every 5 minutes, every half hour, every hour, etc. In some implementations, the audio buffer application 250 updates the dynamic buffer size automatically. In some implementations, the audio buffer application 250 updates the dynamic buffer size in response to a triggering event. For example, the audio buffer application 250 may update the dynamic buffer size in response to detecting that traffic in the audio device network 112 exceeds a threshold, in response to detecting that traffic in the audio device network 112 has fallen below a threshold, in response to detecting that the amount of time taken for the satellite audio output device 110 to respond to the main computing device 102 exceeds a threshold, and / or in response to some other triggering event. When the audio buffer application 250 updates or determines a new dynamic buffer size, the audio buffer application 250 uses the latest latency data sample generated by and received from the satellite audio output device 110.
[0091] For example This is a block diagram of an audio buffer application 250 according to various embodiments of the present invention. As shown, the audio buffer application 250 maintains a list of waiting time data samples 602 in descending order. Each entry or waiting time data sample in the list of descending-order waiting time data samples 602 includes a corresponding entry number, a waiting time value, and a timestamp. In some embodiments, the timestamp indicates the time when the satellite audio output device 110 generated the corresponding waiting time data sample. In other embodiments, the timestamp indicates the time when the audio buffer application 250 received and / or processed the corresponding waiting time data sample.
[0092] As described above, the audio buffer application 250 receives latency data samples from the satellite audio output device 110 and stores the received latency data samples as latency data 262 in the database 260. In some embodiments, the audio buffer application 250 timestamps the corresponding latency data samples upon receipt. When latency data samples are stored in the database 260, they may be stored in a random order rather than sorted based on the size of the latency values included in the latency data samples. Therefore, when the audio buffer application 250 determines the aggregate latency value and / or the dynamic buffer size, the audio buffer application 250 retrieves unsorted latency data samples from the database 260 and sorts the latency data samples in descending order according to the size of the latency values included in the latency data samples. ExampleAs shown in the example, the first entry in the list of descending-ordered wait time data sample 602 has a wait time value of 375 ms, which is the largest wait time value included in the wait time data sample. Furthermore, each entry in the list of descending-ordered wait time data sample 602 after the first entry has a smaller wait time value.
[0093] In some implementations, the audio buffer application 250 continuously updates the list of descending-ordered wait time data samples 602. In some implementations, the audio buffer application 250 periodically ( For example The list of descending-order latency data samples 602 is updated every 30 seconds, every minute, every 5 minutes, every half hour, every hour, etc. In some embodiments, the audio buffer application 250 automatically updates the list of descending-order latency data samples 602. In some embodiments, the audio buffer application 250 updates the list of descending-order latency data samples 602 when it updates the dynamic buffer size. In some embodiments, the audio buffer application 250 updates the list of descending-order latency data samples 602 when it receives one or more new latency data samples from the satellite audio output device 110. In some embodiments, the audio buffer application 250 updates the list of descending-order latency data samples 602 in response to a trigger event. For example, in response to detecting that traffic in the audio device network 112 exceeds a threshold, in response to detecting that traffic in the audio device network 112 has dropped below a threshold, in response to detecting that the amount of time taken for the satellite audio output device 110 to respond to the main computing device 102 exceeds a threshold, and / or in response to some other triggering event, the audio buffer application 250 may update the list of descendingly sorted wait time data samples 602.
[0094] The list of updated waiting time data samples 602 in descending order includes the new waiting time data samples ( Figure 6 Figure 5 New latency data samples received from satellite audio output device 110 are added to the list of descending-ordered latency data samples 602, and old latency data samples are removed from the list of descending-ordered latency data samples 602. Figure 6 (Wait time data samples earlier than a time threshold). For example, when receiving wait time data samples from satellite audio output device 110 and / or after storing wait time data samples in database 260, audio buffer application 250 adds new wait time data samples to the list of wait time data samples 602 in descending order.
[0095] likeFigure 6 As shown, the audio buffer application 250 tracks the current time 610, which is determined based on the RTC of the processing unit 202, and maintains a timestamp threshold 612. In the example shown, the timestamp threshold 612 is 5 minutes. However, those skilled in the art will understand that 5 minutes is merely a non-limiting example of the value of the timestamp threshold 612. When the difference between the timestamp of a waiting time data sample and the current time 610 exceeds the timestamp threshold 612, the audio buffer application 250 removes the waiting time data sample from the list of descending-ordered waiting time data samples 602 and / or deletes the waiting time data sample from the database 260.
[0096] Updating the list of descending-order wait time data samples 602 also includes determining and updating the mean 620 of the N maximum wait time values included in the list of descending-order wait time data samples 602 and the standard deviation 622 of the mean of the N maximum wait time values included in the list of descending-order wait time data samples 602. The N maximum wait time values in the list of descending-order wait time data samples 602 are the corresponding wait time values included in the first to Nth entries of the list of descending-order wait time data samples 602. The audio buffer application 250 determines the mean 620 of the N maximum wait time values included in the list of descending-order wait time data samples 602, and then determines the standard deviation 622 of the mean 620 of the N maximum wait time values included in the list of descending-order wait time data samples 602. As shown in the figure, in the example, the average of the N maximum latency values, 620, is 134.32 ms, and the standard deviation of 622 from the average of the N maximum latency values, 620, is 41.72 ms. These example values are consistent with the above regarding... Figure 6 The example values described are consistent. However, those skilled in the art will understand that 134.32 ms is merely a non-limiting example of the average 620 of the N largest wait time values included in the list of descendingly sorted wait time data samples 602. Similarly, those skilled in the art will understand that 41.72 ms is merely a non-limiting example of the standard deviation 622 of the average 620 of the N largest wait time values included in the list of descendingly sorted wait time data samples 602.
[0097] like Figure 7 As shown, the audio buffer application 250 also determines and maintains an aggregate wait time value 630 for determining the dynamic buffer size. For example, the audio buffer application 250 uses equations 2 to 4 described herein to determine the aggregate wait time value 630. Figures 1 to 6In the example shown, the aggregate wait time value is approximately 200 ms. In some implementations, the audio buffer application 250 determines a new aggregate wait time value or updates the aggregate wait time value 630 each time the list of descending-sorted wait time data samples 602 is updated. Figure 6 The dashed box indicates which wait time data samples are included in the list of descending-ordered wait time data samples 602, which are used by the audio buffer application 250 to determine the aggregate wait time value 630 and / or the new dynamic buffer size. In the example shown, the first N entries in the list of descending-ordered data samples are included in the dashed box.
[0098] Figure 8 This is a flowchart of method steps for determining the buffer size in a networked audio system, according to one or more aspects of various implementation schemes. Although the method steps are about... Figures 1 to 6 The methods described are based on systems and examples, but those skilled in the art will understand that any system configured to perform the method steps in any order falls within the scope of various implementations.
[0099] As shown in the figure, method 700 begins at step 702, where an audio buffer application 250 executing on the processing unit 202 of the main computing device 102 requests the satellite audio output device 110 to provide latency data for the audio buffer application 250. The latency data includes, for example, latency data samples generated by the satellite audio output device 110. As described above, each latency data sample includes a latency value associated with a message sent by the main computing device 102 and received by the satellite audio output device 110. For example, the latency value is the time difference between the time the main computing device 102 sends the message and the time the satellite audio output device 110 receives the message. In some examples, the latency value additionally includes a time associated with the time taken by the satellite audio output device 110 to process the message. In some examples, each latency data sample also includes a timestamp indicating the time when the respective latency data sample was generated and / or a timestamp associated with the time the satellite audio output device 110 received the message.
[0100] In step 704, the audio buffer application 250 receives one or more responses including latency data from the satellite audio output device 110. In some examples, the audio buffer application 250 timestamps the responses with the corresponding time at which the audio buffer application 250 received the responses. In step 706, the audio buffer application 250 sorts the latency values included in the latency data received in step 704 in descending order. For example, as described above, each latency data sample included in the latency data received in step 704 includes a corresponding latency value. Therefore, as stated above regarding... The audio buffer application 250 sorts the waiting time data samples in descending order based on the corresponding size of the waiting time values included in the waiting time data samples.
[0101] In step 708, the audio buffer application 250 selects N maximum wait time values from the wait time values sorted in descending order in step 706. In some examples, selecting N maximum wait time values involves determining the average of the N maximum wait time values and selecting wait time values from the N maximum wait time values that are within a standard deviation of a threshold number from the average of the N maximum wait time values.
[0102] In step 710, the audio buffer application 250 determines an aggregated latency value based on the N maximum latency values selected in step 708. In some examples, determining the aggregated latency value involves applying a weighted average formula to the N maximum latency values selected in step 708, wherein the weight of the larger latency value among the selected N maximum latency values is greater than the weight of the smaller latency value among the selected N maximum latency values. For example, the audio buffer application 250 may use equations 2 through 4 to determine the aggregated latency value based on the N maximum latency values selected in step 708.
[0103] In step 712, the audio buffer application 250 determines a buffer size, such as a dynamic buffer size, based on the aggregated wait time value determined in step 710. For example, the audio buffer application 250 uses Equation 1 and / or some other technique described herein to determine the buffer size. In step 714, the audio buffer application 250 allocates the buffer size to the satellite audio output device 110. In some examples, allocating the buffer size includes sending one or more messages including the buffer size to the satellite audio output device 110 via the audio device network 112. In some examples, the one or more messages including the buffer size also include instructions for each satellite audio output device 110 to configure the size of its audio buffer 362 to the buffer size.
[0104] In step 716, the audio buffer application 250 discards outdated latency. In some examples, discarding outdated latency data includes deleting the latency data when the timestamp associated with the latency data (e.g., a timestamp applied by the audio buffer application 250 to the latency data, indicating the time when the audio buffer application 250 receives the latency data) is earlier than a time threshold. In some examples, discarding outdated latency data includes deleting the latency data when the time when the satellite audio output device 110 generates the latency data exceeds a time threshold.
[0105] Then, method 700 returns to step 702, in which the audio buffer application 250 requests the satellite audio output device 110 to provide new or updated latency data. In this way, method 700 dynamically determines the buffer size of the audio output device playing audio in the networked audio system.
[0106] This is a flowchart of method steps for adjusting the buffer size in a satellite audio output device, according to one or more aspects of various implementation schemes. Although the method steps are about... The methods described are based on systems and examples, but those skilled in the art will understand that any system configured to perform the method steps in any order falls within the scope of various implementations.
[0107] As shown in the figure, method 800 begins at step 802, where a waiting time application 352 executing on the processing unit 302 of the satellite audio output device 110 receives a timestamped message from the main computing device 102. In some examples, the timestamped message includes a timestamp indicating the time when the main computing device 102 sent the message. In some examples, the timestamped message also includes audio content to be played by the satellite audio output device 110, such as one or more audio data packets.
[0108] In step 804, the waiting time application 352 determines the waiting time or transmission delay of the timestamped message received in step 802 and stores the waiting time of the timestamped message as a waiting time data sample. In some examples, determining the waiting time of the timestamped message received in step 802 includes determining the time difference between the time when the main computing device 102 sends the timestamped message and the time when the waiting time application 352 receives the timestamped message. In some examples, determining the waiting time of the timestamped message also includes adding the amount of time taken by the satellite audio output device 110 to process the timestamped message to the time difference between the time when the main computing device 102 sends the timestamped message and the time when the waiting time application 352 receives the timestamped message. In some examples, storing the waiting time of the timestamped message as a waiting time data sample includes generating a waiting time data sample that includes the waiting time of the timestamped message and storing the waiting time data sample in the system memory 332 of the satellite audio output device 110 or some other system storage device. In some examples, the waiting time application 352 timestamps the waiting time data sample with the time when the waiting time application 352 receives the timestamped message and / or with the time when the waiting time application 352 generates the waiting time data sample.
[0109] In step 806, the waiting time application 352 receives a request for waiting time data from the main computing device 102. For example, the request for waiting time data includes a request for a sample of waiting time data (such as a sample of waiting time data generated in step 804 and stored in the system memory 332 of the satellite audio output device 110 and / or some other system storage device).
[0110] In step 808, in response to receiving a request for latency data from the main computing device 102, the latency application 352 sends one or more latency data samples stored in system memory 332 and / or some other system storage device to the main computing device 102. In some examples, the latency application 352 sends all latency data samples stored in system memory 332 and / or some other system storage device to the main computing device 102. In other examples, the latency application 352 sends only some of the stored latency data samples.
[0111] In step 810, after the wait time data sample is sent to the main computing device 102 in step 808, the wait time application 352 deletes the stored wait time data sample from the system memory 332 and / or some other system storage device.
[0112] In step 812, the satellite audio output device 110 receives a message including the buffer size from the main computing device 102. For example, an audio buffer application 360 executing on the processing unit 302 of the satellite audio output device 110 receives the message including the buffer size from the main computing device 102. In some examples, the message also includes instructions for configuring the size of the audio buffer 362 of the satellite audio output device 110 based on the buffer size included in the message.
[0113] In step 814, in response to receiving a message including a buffer size from the main computing device 102, the audio buffer application 360 adjusts the size of the audio buffer 362 based on the buffer size included in the message received from the main computing device 102. In some examples, adjusting the size of the audio buffer 362 based on the buffer size included in the message includes setting or configuring the size of the audio buffer 362 to the buffer size included in the message received from the main computing device 102.
[0114] Then, method 800 returns to step 802, in which the latency application 352 receives another timestamped message from the main computing device 102. In this way, method 800 dynamically adjusts the size of the buffers included in the audio output devices based on latency data generated by one or more audio output devices in the networked audio system.
[0115] In summary, a computing device and multiple satellite audio output devices are coupled together to form a networked audio system. The main computing device requests latency data from the multiple satellite audio output devices. The latency data includes latency data samples generated by the multiple satellite audio output devices. Each latency data sample includes a latency value indicating the time difference between the time the main computing device sends a message and the time the satellite audio output device receives the message. The disclosed technique determines an aggregate latency value based on the latency data samples received from the multiple satellite audio output devices. In some examples, the main computing device uses a weighted average function to determine the aggregate latency value, the function giving greater weight to larger latency values included in the latency data samples. The disclosed technique also includes determining the buffer size of audio buffers included in the multiple satellite audio output devices based on the aggregate latency value. The disclosed technique also includes allocating the buffer sizes to the multiple satellite audio output devices such that the multiple satellite audio output devices configure the size of their respective audio buffers based on the allocated buffer sizes. When the network conditions of the networked audio system change over time, the main computing device determines an updated value for the buffer size and distributes the updated value for the buffer size to the plurality of audio output devices.
[0116] At least one technical advantage of the disclosed technology over existing technologies is that it allows for the dynamic adjustment of the buffer size of satellite devices in a networked audio system based on network conditions. Therefore, when network conditions are low, the buffer size of the satellite devices can be reduced without increasing the risk of them running out of audio data packets to play, while also reducing processing wait time. Conversely, when the network is congested, the buffer size of the satellite devices can be increased as needed to store additional audio data packets for playback. Another technical advantage is that the buffer sizes of all satellite devices in the networked audio system can be synchronized, eliminating the adverse effects on audio playback synchronization caused by mismatched buffer sizes. Furthermore, another technical advantage is that the disclosed technology does not employ complex, resource-intensive algorithms, thus avoiding strain on the processing capabilities of the satellite devices. Instead, the disclosed technology uses only a fraction of the satellite devices' processing resources, allowing more processing power to be devoted to audio processing. Therefore, listeners can enjoy a higher quality listening experience than with conventional technologies. These technical advantages provide one or more technical improvements over existing methods.
[0117] 1. In some embodiments, a computer-implemented method for determining a buffer size in a networked audio system includes: requesting one or more audio output devices to provide latency data; receiving a plurality of latency data samples from the one or more audio output devices, wherein each of the plurality of latency data samples includes a latency value; selecting a maximum latency value from the latency values included in the plurality of latency data samples; determining an aggregate latency value based on the maximum latency value; determining the buffer size based on the aggregate latency value; and allocating the buffer size to the one or more audio output devices, wherein the buffer size is available for the one or more audio output devices to configure a corresponding buffer.
[0118] 2. The computer-implemented method as described in Clause 1, wherein each waiting time value indicates the difference between the time when the computing device sends a message and the time when the audio output device receives the message.
[0119] 3. The computer-implemented method as described in Clause 1 or 2, wherein selecting the maximum waiting time value from the waiting time values included in the plurality of waiting time data samples further comprises sorting the waiting time values in descending order; and selecting a certain number of maximum waiting time values from the descendingly sorted waiting time values.
[0120] 4. The computer-implemented method of any one of claims 1 to 3, wherein the number of maximum latency values is based on the number of audio output devices coupled to the networked audio system.
[0121] 5. The computer-implemented method of any one of Clauses 1 to 4, wherein determining the aggregated wait time value based on the maximum wait time value further includes determining a weighted average of the maximum wait time values; and determining the aggregated wait time value as the weighted average of the maximum wait time values.
[0122] 6. The computer-implemented method of any one of claims 1 to 5, wherein determining the weighted average of the maximum waiting time values further includes assigning a first weight value to the maximum waiting time values included in the maximum waiting time values; and assigning a second weight value to other waiting time values included in the maximum waiting time values, the second weight value being less than the first weight value.
[0123] 7. The computer-implemented method of any one of claims 1 to 6, further comprising determining an average value of the maximum waiting time value; determining a standard deviation of the maximum waiting time value; and determining the first weight value based on the average value, the standard deviation of the average value, and the maximum waiting time value included in the maximum waiting time value.
[0124] 8. A computer-implemented method as described in any one of Clauses 1 to 7, wherein a first wait time data sample included in the plurality of wait time data samples includes a timestamp indicating the time when the first wait time data sample was generated.
[0125] 9. The computer-implemented method of any one of claims 1 to 8, further comprising discarding the first waiting time data sample in response to determining that the time for generating the first waiting time data sample is earlier than a threshold.
[0126] 10. The computer-implemented method as described in any one of Clauses 1 to 9, wherein the waiting time value includes the amount of time taken by the audio output device to process the message sent by the computing device.
[0127] 11. In some embodiments, one or more non-transitory computer-readable storage media include instructions that, when executed by one or more processors at a first computing device, cause the one or more processors to perform the following steps: requesting one or more audio output devices to provide latency data; receiving a plurality of latency data samples from the one or more audio output devices, wherein each of the plurality of latency data samples includes a latency value; selecting a maximum latency value from the latency values included in the plurality of latency data samples; determining an aggregate latency value based on the maximum latency value; determining a buffer size based on the aggregate latency value; and allocating the buffer size to the one or more audio output devices, wherein the buffer size is available for the one or more audio output devices to configure a corresponding buffer.
[0128] 12. One or more non-transitory computer-readable media as described in Clause 11, wherein each latency value indicates the difference between the time when the computing device sends a message and the time when the audio output device receives the message.
[0129] 13. One or more non-transitory computer-readable media as described in Clause 11 or 12, wherein the step of selecting the maximum wait time value from the wait time values included in the plurality of wait time data samples further includes sorting the wait time values in descending order; and selecting a number of maximum wait time values from the descendingly sorted wait time values.
[0130] 14. One or more non-transitory computer-readable media as described in any one of clauses 11 to 13, wherein the number of the maximum latency value is based on the number of audio output devices coupled to the first computing device.
[0131] 15. One or more non-transitory computer-readable media as described in any one of Clauses 11 to 14, wherein the step of determining the aggregated latency value based on the maximum latency value further includes determining a weighted average of the maximum latency values; and determining the aggregated latency value as the weighted average of the maximum latency values.
[0132] 16. One or more non-transitory computer-readable media as described in any one of clauses 11 to 15, wherein the step of determining the weighted average of the maximum latency values further comprises assigning a first weight value to the maximum latency values included in the maximum latency values; and assigning a second weight value to other latency values included in the maximum latency values, the second weight value being less than the first weight value.
[0133] 17. One or more non-transitory computer-readable media as described in any one of clauses 11 to 16, wherein the step further includes determining an average value of the maximum latency value; determining a value of the standard deviation of the maximum latency value; and determining the first weight value based on the average value, the value of the standard deviation of the average value, and the maximum latency value included in the maximum latency value.
[0134] 18. One or more non-transitory computer-readable media as described in any one of clauses 11 to 17, wherein a first data sample included in the plurality of waiting time data samples includes a timestamp indicating the time when the first data sample was generated; and the step further includes discarding the first data sample in response to determining that the time when the first data sample was generated was earlier than a threshold.
[0135] 19. In some embodiments, a computing device includes: a memory storing an application; and one or more processors configured, when executing the application, to: request one or more audio output devices to provide latency data; receive a plurality of latency data samples from the one or more audio output devices, wherein each of the plurality of latency data samples includes a latency value; select a maximum latency value from the latency values included in the plurality of latency data samples; determine an aggregate latency value based on the maximum latency value; determine a buffer size based on the aggregate latency value; and allocate the buffer size to the one or more audio output devices, wherein the buffer size is available for the one or more audio output devices to configure a corresponding buffer.
[0136] 20. The computing device as described in Clause 19, wherein each latency value indicates the difference between the time when the computing device sends a message and the time when the audio output device receives the message.
[0137] Any and all combinations of any claim element referenced in any claim and / or any element described in this application in any manner fall within the intended scope of this disclosure and protection.
[0138] Various implementation schemes have been described for illustrative purposes and are not intended to be exhaustive or limited to the disclosed schemes. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described schemes.
[0139] Aspects of this disclosure may be embodied as a system, method, or computer program product. Therefore, aspects of this disclosure may take the form of a completely hardware implementation, a completely software implementation (including firmware, resident software, microcode, etc.), or an implementation combining software and hardware aspects, all of which may generally be referred to herein as a “module,” “system,” or “computer.” Furthermore, any hardware and / or software technology, process, function, component, engine, module, or system described in this disclosure may be implemented as a circuit or collection of circuits. Additionally, aspects of this disclosure may be in the form of a computer program product embodied on one or more computer-readable media, on which computer-readable program code is embodied.
[0140] Any combination of one or more computer-readable media may be used. A computer-readable medium can be a computer-readable signal medium or a computer-readable storage medium. A computer-readable storage medium can be, for example, but not limited to, electronic, magnetic, optical, electromagnetic, infrared, or semiconductor systems, devices, or apparatuses, or any suitable combination of the foregoing. More specific examples (not an exhaustive list) of computer-readable storage media will include: an electrical connection having one or more wires, a portable computer floppy disk, a hard disk, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), optical fiber, portable optical disc read-only memory (CD-ROM), optical storage devices, magnetic storage devices, or any suitable combination of the foregoing media. In the context of this document, a computer-readable storage medium can be any tangible medium that can contain or store programs for use by or connected to an instruction execution system, device, or apparatus.
[0141] The foregoing description of aspects of this disclosure is based on flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of this disclosure. It should be understood that each block in the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer program instructions. These computer program instructions can be provided to a processor of a general-purpose computer, special-purpose computer, or other programmable data processing apparatus to produce a machine. When executed via a processor of a computer or other programmable data processing apparatus, these instructions enable the performance of the functions / actions specified in one or more blocks of the flowchart illustrations and / or block diagrams. Such processors can be, but are not limited to, general-purpose processors, special-purpose processors, special-purpose processors, or field-programmable gate arrays.
[0142] The flowcharts and block diagrams in the accompanying drawings illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this respect, each block in a flowchart or block diagram may represent a module, segment, or portion of code comprising one or more executable instructions for implementing a specified logical function. It should also be noted that in some alternative implementations, the functions mentioned in the blocks may not appear in the order shown in the drawings. For example, depending on the functionality involved, two blocks shown consecutively may be executed substantially simultaneously, or sometimes the blocks may be executed in reverse order. It should also be noted that each block in the block diagrams and / or flowcharts, and combinations of blocks in the block diagrams and / or flowcharts, may be implemented by a special-purpose hardware-based system performing the specified function or action, or by a combination of special-purpose hardware and computer instructions.
[0143] While the foregoing describes an embodiment of this disclosure, other and more embodiments of this disclosure may be devised without departing from the basic scope of this disclosure, as defined by the appended claims.
Claims
1. A computer-implemented method for determining the buffer size in a networked audio system, the method comprising: Request one or more audio output devices to provide latency data; Receive a plurality of wait time data samples from the one or more audio output devices, wherein each of the plurality of wait time data samples includes a wait time value; Select the maximum waiting time value from the waiting time values included in the plurality of waiting time data samples; The aggregate waiting time value is determined based on the maximum waiting time value; The buffer size is determined based on the aggregated wait time value; and The buffer size is allocated to the one or more audio output devices, wherein the buffer size is available for the one or more audio output devices to configure the corresponding buffer.
2. The computer-implemented method of claim 1, wherein each waiting time value indicates the difference between the time when the computing device sends a message and the time when the audio output device receives the message.
3. The computer-implemented method of claim 1, wherein selecting the maximum waiting time value from the waiting time values included in the plurality of waiting time data samples further comprises: Sort the waiting time values in descending order; as well as Select a certain number of the maximum waiting time values from the descending sorted waiting time values.
4. The computer-implemented method of claim 3, wherein the number of maximum waiting time values is based on the number of audio output devices coupled to the networked audio system.
5. The computer-implemented method of claim 1, wherein determining the aggregated wait time value based on the maximum wait time value further includes: Determine the weighted average of the maximum waiting time values; as well as The aggregated waiting time value is determined as the weighted average of the maximum waiting time value.
6. The computer-implemented method of claim 5, wherein determining the weighted average of the maximum waiting time value further includes: Assign a first weight value to the maximum waiting time value included in the maximum waiting time value; as well as A second weight value is assigned to the other waiting time values included in the maximum waiting time value, the second weight value being less than the first weight value.
7. The computer-implemented method of claim 6, further comprising: Determine the average value of the maximum waiting time; Determine the standard deviation of the maximum waiting time value; as well as The first weight value is determined based on the average value, the standard deviation from the average value, and the maximum waiting time value included in the maximum waiting time value.
8. The computer-implemented method of claim 1, wherein the first waiting time data sample included in the plurality of waiting time data samples includes a timestamp indicating the time when the first waiting time value sample was generated.
9. The computer-implemented method of claim 8, further comprising discarding the first waiting time value sample in response to determining that the time for generating the first waiting time value sample is earlier than a threshold.
10. The computer-implemented method of claim 1, wherein the waiting time value includes the amount of time taken by the audio output device to process the message sent by the computing device.
11. One or more non-transitory computer-readable storage media, comprising instructions that, when executed by one or more processors at a first computing device, cause the one or more processors to perform the following steps: Request one or more audio output devices to provide latency data; Receive a plurality of wait time data samples from the one or more audio output devices, wherein each of the plurality of wait time data samples includes a wait time value; Select the maximum waiting time value from the waiting time values included in the plurality of waiting time data samples; The aggregate waiting time value is determined based on the maximum waiting time value; The buffer size is determined based on the aggregated wait time value; and The buffer size is allocated to the one or more audio output devices, wherein the buffer size is available for the one or more audio output devices to configure the corresponding buffer.
12. The one or more non-transitory computer-readable storage media of claim 11, wherein each latency value indicates the difference between the time when the computing device sends a message and the time when the audio output device receives the message.
13. The one or more non-transitory computer-readable storage media of claim 11, wherein the step of selecting the maximum latency value from the latency values included in the plurality of latency data samples further comprises: Sort the waiting time values in descending order; as well as Select a certain number of the maximum waiting time values from the descending sorted waiting time values.
14. One or more non-transitory computer-readable storage media as claimed in claim 13, wherein the number of maximum latency values is based on the number of audio output devices coupled to the first computing device.
15. One or more non-transitory computer-readable storage media as claimed in claim 11, wherein the step of determining the aggregated latency value based on the maximum latency value further comprises: Determine the weighted average of the maximum waiting time values; as well as The aggregated waiting time value is determined as the weighted average of the maximum waiting time value.
16. The one or more non-transitory computer-readable media of claim 15, wherein the step of determining the weighted average of the maximum latency value further comprises: Assign a first weight value to the maximum waiting time value included in the maximum waiting time value; as well as A second weight value is assigned to the other waiting time values included in the maximum waiting time value, the second weight value being less than the first weight value.
17. The one or more non-transitory computer-readable storage media of claim 16, wherein the step further comprises: Determine the average value of the maximum waiting time; Determine the standard deviation of the maximum waiting time value; as well as The first weight value is determined based on the average value, the standard deviation from the average value, and the maximum waiting time value included in the maximum waiting time value.
18. One or more non-transitory computer-readable storage media as claimed in claim 11, wherein: The first data sample included in the plurality of waiting time data samples includes a timestamp indicating the time when the first data sample was generated; and The step further includes discarding the first data sample in response to determining that the time in which the first data sample was generated was earlier than a threshold.
19. A computing device comprising: The memory stores the application program; as well as One or more processors, wherein the one or more processors are configured to: Request one or more audio output devices to provide latency data; Receive a plurality of wait time data samples from the one or more audio output devices, wherein each of the plurality of wait time data samples includes a wait time value; Select the maximum waiting time value from the waiting time values included in the plurality of waiting time data samples; The aggregate waiting time value is determined based on the maximum waiting time value; The buffer size is determined based on the aggregated wait time value; and The buffer size is allocated to the one or more audio output devices, wherein the buffer size is available for the one or more audio output devices to configure the corresponding buffer.
20. The computing device of claim 19, wherein each latency value indicates the difference between the time the computing device sends a message and the time the audio output device receives the message.