throbber
RCS file: /Users/implicit/Desktop/Source
`Code/cvs_strings/beads/audiosync/main/audiosync.c,v
`Working file: bdk/beads/audiosync/main/audiosync.c
`head: 1.26
`branch:
`locks: strict
`access list:
`symbolic names:
`BUILD_20060123: 1.26
`BUILD_20050908: 1.26
`BUILD_20050817: 1.26
`BUILD_20050722: 1.26
`BUILD_20050718: 1.26
`BUILD_20050627: 1.26
`BUILD_20050605: 1.26
`TRAVIS_20050527: 1.26.0.22
`dev_NewSchema-branch: 1.26.0.20
`rd_GuiToolkit-branch: 1.26.0.18
`ALL_20050422: 1.26
`TRIO_20050418: 1.26
`TRIO_20050404: 1.26
`blackfin-branch: 1.26.0.16
`TRIO-20041130: 1.26
`RADKIT_GOLD_0042: 1.26.0.14
`BEADS_SILVER_0056: 1.26
`RADKIT_GOLD_0041: 1.26.0.12
`BEADS_SILVER_0055: 1.26
`RADKIT_GOLD_0040: 1.26.0.10
`BEADS_SILVER_0054: 1.26
`BANDON_20040413: 1.26.0.8
`RADKIT_GOLD_0039: 1.26.0.6
`BEADS_SILVER_0053: 1.26
`BANDON_20040329: 1.26.0.4
`RADKIT_GOLD_0038: 1.26.0.2
`BEADS_SILVER_0052: 1.26
`RADKIT_GOLD_0037: 1.25.0.52
`BEADS_SILVER_0051: 1.25
`RADKIT_GOLD_0036: 1.25.0.50
`BEADS_SILVER_0050: 1.25
`RADKIT_GOLD_0035: 1.25.0.48
`BEADS_SILVER_0049: 1.25
`RADKIT_GOLD_0034: 1.25.0.46
`BANDON_20031224: 1.25.0.44
`BANDON_20031219: 1.25.0.42
`
`Page 1 of 7
`
`Implicit Exhibit 2016
`Sonos v. Implicit, IPR2018-0766, -0767
`
`

`

`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`BANDON_20031214: 1.25.0.40
`BANDON_20031204: 1.25.0.38
`BANDON_20031103: 1.25.0.36
`BANDON_20031024: 1.25.0.34
`BANDON_20031014: 1.25.0.32
`BEADS_SILVER_0048: 1.25
`BEADS_SILVER_0047: 1.25
`RADKIT_GOLD_0033: 1.25.0.30
`BANDON_20030903: 1.25.0.28
`BEADS_SILVER_0046: 1.25
`RADKIT_GOLD_0032: 1.25.0.26
`BEADS_SILVER_0045: 1.25
`RADKIT_GOLD_0031: 1.25.0.24
`BEADS_SILVER_0044: 1.25
`RADKIT_GOLD_0030: 1.25.0.22
`BANDON_20030815: 1.25.0.20
`BEADS_SILVER_0042: 1.25
`RADKIT_GOLD_0029: 1.25.0.18
`BEADS_SILVER_0041: 1.25
`RADKIT_GOLD_0028: 1.25.0.16
`BEADS_SILVER_0040: 1.25
`BEADS_SILVER_0039: 1.25
`RADKIT_GOLD_0026: 1.25.0.14
`BEADS_SILVER_0038: 1.25
`RADKIT_GOLD_0025: 1.25.0.12
`BEADS_SILVER_0037: 1.25
`RADKIT_GOLD_0024: 1.25.0.10
`BEADS_SILVER_0036: 1.25
`RADKIT_GOLD_0023: 1.25.0.8
`BEADS_SILVER_0035: 1.25
`RADKIT_GOLD_0022: 1.25.0.6
`BEADS_SILVER_0034: 1.25
`RADKIT_GOLD_0021: 1.25.0.4
`BEADS_SILVER_0033: 1.25
`RADKIT_GOLD_0020: 1.25.0.2
`BEADS_SILVER_0032: 1.25
`RADKIT_GOLD_0019: 1.23.0.2
`BEADS_SILVER_0031: 1.23
`RADKIT_GOLD_0018: 1.22.0.4
`BEADS_SILVER_0030: 1.22
`RADKIT_GOLD_0017: 1.22.0.2
`BEADS_SILVER_0029: 1.22
`RADKIT_GOLD_0016: 1.21.0.2
`BEADS_SILVER_0028: 1.21
`
`Page 2 of 7
`
`Implicit Exhibit 2016
`Sonos v. Implicit, IPR2018-0766, -0767
`
`

`

`RADKIT_GOLD_0015: 1.20.0.4
`
`BEADS_SILVER_0027: 1.20
`
`RADKIT_GOLD_0014: 1.20.0.2
`
`BEADS_SILVER_0026: 1.20
`
`RADKIT_GOLD_0013: 1.18.0.6
`
`BEADS_SILVER_0025: 1.18
`
`RADKIT_GOLD_0012: 1.18.0.4
`
`BEADS_SILVER_0024: 1.18
`
`RADKIT_GOLD_0011: 1.18.0.2
`
`BEADS_SILVER_0023: 1.18
`
`RADKIT_GOLD_0010_INTERNAL: 1.18
`
`BEADS_SILVER_0022: 1.18
`
`RADKIT_GOLD_0009: 1.16.0.10
`
`BEADS_SILVER_0021: 1.16
`
`BEADS_SILVER_0020: 1.16
`
`RADKIT_GOLD_0008_INTERNAL: 1.16
`
`BEADS_SILVER_0019: 1.16
`
`RADKIT_GOLD_0007: 1.16.0.8
`
`BEADS_SILVER_0018: 1.16
`
`BEADS_SILVER_0017: 1.16
`
`RADKIT_GOLD_0006: 1.16.0.6
`
`BEADS_SILVER_0016: 1.16
`
`RADKIT_GOLD_0005_INTERNAL: 1.16
`
`BEADS_SILVER_0015: 1.16
`
`RADKIT_GOLD_0004_INTERNAL: 1.16
`
`BEADS_SILVER_0014: 1.16
`
`RADKIT_GOLD_0003_INTERNAL: 1.16
`
`BEADS_SILVER_0013: 1.16
`
`RADKIT_GOLD_0002: 1.16.0.4
`
`BEADS_SILVER_0012: 1.16
`
`BEADS_SILVER_0011: 1.16
`
`RADKIT_GOLD_0001: 1.16.0.2
`
`BEADS_SILVER_0010: 1.16
`
`BEADS_SILVER_0009: 1.16
`
`BEADS_SILVER_0008: 1.12
`
`BEADS_SILVER_0007: 1.8
`
`SILVER: 1.26
`
`keyword substitution: kv
`total revisions: 26;
`selected revisions: 26
`description:
`----------------------------
`revision 1.26
`date: 2004-03-04 18:23:22 -0600; author: build; state: Exp; lines: +81 -83;
`Fix GCC type-punning warnings, which show up in retail mode on GCC 3.3.2.
`
`Page 3 of 7
`
`Implicit Exhibit 2016
`Sonos v. Implicit, IPR2018-0766, -0767
`
`

`

`Fix some coding convention violations (mostly whitespace).
`----------------------------
`revision 1.25
`date: 2002-06-10 16:45:14 -0500; author: davidc; state: Exp; lines: +5 -91;
`Removed the "preroll" edge, which is not used and whose purpose is unknown.
`----------------------------
`revision 1.24
`date: 2002-06-10 16:18:52 -0500; author: davidc; state: Exp; lines: +77 -53;
`Changed the default "smoothing" parameter to 1, so that the sliding average only includes the
`current value. Changed the code to silence all audio while the master clock is not set.
`Changed the code from silencing the first audio message to sending an empty message before
`sending the first message, which allows the render clock to be updated without any data loss.
`
`These changes help lessen the severity of audio chop that is heard on slave paths when the
`master is on a different machine than the source.
`
`The problem was that the delay for each audio chuck is the average of the last eight audio
`chunks played. This "smoothing" technique caused the master/render clock difference to
`oscillate while converging, which caused chopping. To explain: when audio is early, AudioSync
`delays the audio. When AudioSync has delayed the audio to make the audio on-time, the
`sliding average makes AudioSync act as if the audio is still early, causing it to further delay the
`audio. This makes the audio late. The audio did converge to being on-time, but not before
`sliding from early to on-time to late to on-time. Because AudioSync silences the audio when it
`is early or late and plays it when it is on-time, this oscillation causes audio to be silenced, then
`played, then silenced, then played, which is the chopping.
`
`The end result of these changes is that synchronization converge is sped up slightly and the out-
`of-sync slaves are silent instead of chopping. In the worst case, when the master is on a
`different machine than the source, this can cause between one and two seconds of silence.
`
`This is more of a work-around than a fix for the real problem, which is that is that it takes time
`for updates to the render clock of the master path to be propogated to the slaves. I don't know
`of a good way to solve this problem.
`----------------------------
`revision 1.23
`date: 2002-06-10 12:04:52 -0500; author: davidc; state: Exp; lines: +22 -7;
`Fixed a memory overwrite bug in SlidingAvg_Init. Memory would be overwritten if the sliding
`average length was less than five.
`----------------------------
`revision 1.22
`date: 2002-05-24 18:46:48 -0500; author: davidc; state: Exp; lines: +150 -148;
`Made it so that the "MasterClockOffset" attribute is treated as a signed value, so the audio can
`be sped-up in addition to being slowed down. Made it so that "MasterClockOffset" is ignored in
`master paths.
`
`Page 4 of 7
`
`Implicit Exhibit 2016
`Sonos v. Implicit, IPR2018-0766, -0767
`
`

`

`
`Refactored AudioSync_Adjust so that it can be called multiple times for a single message. This
`was useful when playing around with different strategies of how to incorporate the
`MasterClockOffset. I did not end up calling AudioSunc_Adjust from more than one place, but I
`kept the changes to make it easier to play around with the MasterClockOffset strategy in the
`future.
`----------------------------
`revision 1.21
`date: 2002-05-16 22:26:03 -0500; author: davidc; state: Exp; lines: +4 -4;
`Untabified
`----------------------------
`revision 1.20
`date: 2002-04-30 21:55:17 -0500; author: davidc; state: Exp; lines: +60 -42;
`Added some code that reads in the "MasterClockOffset" from the path and adds that the to
`master clock's epoch. This hack helps simpletv synchronize audio and video.
`----------------------------
`revision 1.19
`date: 2002-04-30 20:11:26 -0500; author: davidc; state: Exp; lines: +19 -16;
`Fixed defect #257, which is that audiosync would go into an inifite loop when it received an
`empty audio package that was within the EARLY_COPY range. I fixed this by not attempting to
`duplicate empty audio messages.
`----------------------------
`revision 1.18
`date: 2002-04-03 15:15:46 -0600; author: davidc; state: Exp; lines: +2 -2;
`Made the "Audio sync reports" DEBUGOUT a data trace (level 4) rather than a detail (level 5) so
`that it can be turned on without turning the others on.
`----------------------------
`revision 1.17
`date: 2002-04-02 23:23:52 -0600; author: davidc; state: Exp; lines: +3 -1;
`Added static keyword to eliminate unnecessary namespace pollution.
`----------------------------
`revision 1.16
`date: 2001-11-09 18:53:11 -0600; author: guyc; state: Exp; lines: +1 -26;
`Removed old and configuration constants.
`----------------------------
`revision 1.15
`date: 2001-11-09 16:52:01 -0600; author: guyc; state: Exp; lines: +11 -11;
`Changed capitalization of path parameters.
`----------------------------
`revision 1.14
`date: 2001-11-09 16:49:04 -0600; author: guyc; state: Exp; lines: +120 -20;
`Now optionally takes parameters (lots of them) from the
`path context. Default values have changed back to
`favour faster convergence, which may not work will with
`
`Page 5 of 7
`
`Implicit Exhibit 2016
`Sonos v. Implicit, IPR2018-0766, -0767
`
`

`

`the ipaq demo - need to use rule seeds in the ipaq demo
`to get it back to good.
`----------------------------
`revision 1.13
`date: 2001-11-09 14:36:49 -0600; author: guyc; state: Exp; lines: +23 -6;
`Changed audiosync to try to detect the situation where
`it is the master and not silence the initial packet.
`----------------------------
`revision 1.12
`date: 2001-10-23 11:53:51 -0500; author: guyc; state: Exp; lines: +2 -1;
`Fixed memory leak. Again.
`----------------------------
`revision 1.11
`date: 2001-10-22 18:34:28 -0500; author: guyc; state: Exp; lines: +12 -10;
`Changed a bunch of debug_stringprints to debugout_detail's, and
`removed explicit debug level setting.
`----------------------------
`revision 1.10
`date: 2001-10-18 15:59:04 -0500; author: guyc; state: Exp; lines: +165 -37;
`Added "preroll" edge to allow sync when a remote edge is
`possibly very late.
`----------------------------
`revision 1.9
`date: 2001-10-15 16:33:01 -0500; author: guyc; state: Exp; lines: +25 -1;
`Added code to silence initial unsync-ed packet.
`----------------------------
`revision 1.8
`date: 2001-10-11 10:18:27 -0500; author: guyc; state: Exp; lines: +114 -8;
`Various changes to improve audio quality and
`avoid major screwups when sample clock is unavailable.
`----------------------------
`revision 1.7
`date: 2001-10-03 19:01:25 -0500; author: guyc; state: Exp; lines: +54 -18;
`Minor cleanups.
`----------------------------
`revision 1.6
`date: 2001-10-03 18:11:55 -0500; author: guyc; state: Exp; lines: +47 -41;
`Now uses a hybrid of resampling, dropping or duplicating, depending
`on the severity of the error.
`----------------------------
`revision 1.5
`date: 2001-10-03 17:32:14 -0500; author: guyc; state: Exp; lines: +83 -2;
`Added resampling algorithm.
`----------------------------
`
`Page 6 of 7
`
`Implicit Exhibit 2016
`Sonos v. Implicit, IPR2018-0766, -0767
`
`

`

`revision 1.4
`date: 2001-10-03 16:58:43 -0500; author: guyc; state: Exp; lines: +27 -7;
`Changed padding method to use audio duplication instead of silence.
`----------------------------
`revision 1.3
`date: 2001-10-03 10:56:20 -0500; author: guyc; state: Exp; lines: +14 -5;
`Fixed sign error in sliding average error calculation.
`----------------------------
`revision 1.2
`date: 2001-10-02 19:34:28 -0500; author: guyc; state: Exp; lines: +85 -15;
`Added sliding average to latency calculation
`----------------------------
`revision 1.1
`date: 2001-09-28 18:04:40 -0500; author: guyc; state: Exp;
`Initial checkin of audiosync. Works using very simple silence/dropping
`logic. Requires finess to make it work with gradual time drift.
`=============================================================================
`
`
`Page 7 of 7
`
`Implicit Exhibit 2016
`Sonos v. Implicit, IPR2018-0766, -0767
`
`

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket