`7,391,791
`Claim 1
`[1 Preamble] A method
`for synchronizing a
`rendering of a content
`provided by a source at
`one or more devices
`which are nodes of a
`network, the content
`having a rendering
`time, the method
`comprising:
`
`CONTAINS PROTECTIVE ORDER MATERIAL
`
`Application of Claim Language to Source Code
`
`Source Code Folders:
`SOFTWARE_STRUCTURE = \test\demo\rules\
`SOFTWARE_CODE = \beads\
`
`The Implicit Source Code specifies a distributed system consisting of a plurality of
`devices that are nodes of a network (“devices”). These devices execute a method for
`synchronizing rendering of content provided by a source, where each device maintains
`a rendering time corresponding to the device time when the device renders content.
`
`An architecture of one such distributed system comprising a plurality of devices is
`defined in files videomulti.rule, videoclient.rule, ipaqvideo.rule,
`pcmaudioserver.rule, syncaudio.rule, and timesync.rule.1,2
`
`[1a] designating one of
`the one or more devices
`a master device, the
`master device having a
`
`The distributed system architecture described in file videomulti.rule designates
`one of the network devices as a master device having a master device time3 and a
`master clock that provides the master rendering times.4,5
`
`1 These files are contained in folder SOFTWARE_STRUCTURE\
`2 Another similar distributed system that renders synchronized content streams is described by the rules files in
`folder \test\audiosync\
`3 See file SOFTWARE_STRUCTURE\audiosync\package\package\timesync.rule
`4 Defined at lines 6 to 133 in file SOFTWARE_STRUCTURE\videomulti.rule
`5 See lines 10 to 15 in file SOFTWARE_STRUCTURE\videomulti.rule
`
`1
`
`Page 1 of 31
`
`Implicit Exhibit 2081
`Sonos v. Implicit, IPR2018-0766, -0767
`
`
`
`U.S. Patent No.
`7,391,791
`master device time and
`a master rendering time;
`
`
`
`
`
`
`CONTAINS PROTECTIVE ORDER MATERIAL
`
`Application of Claim Language to Source Code
`
`
`This master rendering device receives a combined audio and video content stream sent
`by a source device.6 Upon receiving the combined audio and video content stream, the
`master rendering device uses the avidemux bead to separate the combined audio and
`video stream into separate audio and video streams.7,8 The avidemux bead
`instantiates a master rendering clock IAudioClock associated with the audio
`content stream.9 This master rendering clock IAudioClock generates a plurality of
`master rendering times that are indicative of the of statuses of the rendering the
`combined audio and video content stream by the master rendering device at different
`times.
`
`The Implicit Source Code implements a distributed system that runs on network
`devices including master rendering devices and slave rendering devices. Specifically,
`for synchronized audio and video rendering by master and slave rendering devices, the
`Implicit Source Code specifies a distributed system architecture in file
`videomulti.rule. Within file videomulti.rule, a master rendering device
`is defined to have a master rendering clock that provides master rendering times
`corresponding to when the master renders media content.10 This master rendering
`device is set up to receive combined audio and video content stream at port 8013.11
`The master rendering device receives a combined audio and video content stream at its
`
`
`6 See lines 7 to 79 in file \test\demo\source.pl
`7 See lines 11 to 15 in file SOFTWARE_STRUCTURE\videomulti.rule
`8 See file SOFTWARE_CODE\avidemux\main\avidemux.c
`9 See lines 447 to 451 in file SOFTWARE_CODE\avidemux\main\avidemux.c
`10 See lines 11 to 15 in file SOFTWARE_STRUCTURE\videomulti.rule
`11 See line 9 in file SOFTWARE_STRUCTURE\videomulti.rule
`
`2
`
`Page 2 of 31
`
`Implicit Exhibit 2081
`Sonos v. Implicit, IPR2018-0766, -0767
`
`
`
`U.S. Patent No.
`7,391,791
`
`CONTAINS PROTECTIVE ORDER MATERIAL
`
`Application of Claim Language to Source Code
`
`local network port 8013 from a content source device.12 As part of the rendering
`process, this master rendering device uses the avidemux bead to split the combined
`audio and video content stream into separate audio and video streams. Specifically,
`functions AviDemux_EncodeMessageHandler13 and ChunkProcess14 of
`bead avidemux separate the combined audio and video content stream. While
`processing the combined audio and video content streams, the avidemux bead calls
`function AudioPrepare.15 Function AudioPrepare initializes a master
`rendering clock IAudioClock associated with the audio content stream.16 This
`master rendering clock IAudioClock generates a plurality of master rendering times
`that are indicative of how much rendering of the combined audio and video content
`stream has occurred at the master rendering device at different times.
`
`The master rendering device also contains a master device time that is added to UDP
`packets that the master rendering device transmits over the IP network.17,18 This master
`device time is used by the timesync bead to determine the time domain differential
`between the master and the slave time domains.19,20 The timesync bead implements
`
`
`12 See line 9 in file SOFTWARE_STRUCTURE\videomulti.rule
`13 Implemented at lines 883 to 964 in file SOFTWARE_CODE\avidemux\main\avidemux.c
`14 Implemented at lines 597 to 849 in file SOFTWARE_CODE\avidemux\main\avidemux.c
`15 Implemented at lines 389 to 477 in file SOFTWARE_CODE\avidemux\main\avidemux.c
`16 See lines 447 to 451 in file SOFTWARE_CODE\avidemux\main\avidemux.c
`17 See lines 40 to 44 in file SOFTWARE_STRUCTURE\videomulti.rule
`18 Defined at lines 16 to 26 in file SOFTWARE_STRUCTURE\timesync.rule
`19 Defined at lines 5 to 13 in file SOFTWARE_STRUCTURE\timesync.rule
`20 See file SOFTWARE_CODE\timesync\main\timesync.c
`
`3
`
`Page 3 of 31
`
`Implicit Exhibit 2081
`Sonos v. Implicit, IPR2018-0766, -0767
`
`
`
`U.S. Patent No.
`7,391,791
`
`[1b] designating
`remaining devices
`among one of the one or
`more devices as at least
`one slave device, the at
`least one slave device
`
`CONTAINS PROTECTIVE ORDER MATERIAL
`
`Application of Claim Language to Source Code
`a function TimeSync_Send that periodically broadcasts the device times over the IP
`network.21 Function TimeSync_Send calls function SOS_Clock_TickGet to
`obtain the current device times.22 When the timesync bead runs on the master
`rendering device, these times correspond to master device times. The timesync
`bead also implements a function TimeSync_UpdateHandler23 that receives UDP
`packets sent to port 9123. Function TimeSync_UpdateHandler calls function
`SOS_Clock_TickGet to obtain the device time when the device receives a UDP
`packet.24 When the timesync bead is running on the master rendering device, this
`call to function SOS_Clock_TickGet provides the master device times.
`Afterwards, function TimeSync_UpdateHandler calls function
`TimeSync_HostUpdate25,26 to determine the time differential between the master
`and the slave time domains using the master and slave device times.
`
`
`The distributed system described in file videomulti.rule,
`videoclient.rule, and syncaudio.rule designates a plurality of rendering
`devices as slave devices, each slave device has a slave device time and a slave
`rendering time. The slave devices render decoded RGB video frames and PCM audio
`frames in synchronization with the master rendering device.
`
`
`21 Implemented at lines 519 to 603 in file SOFTWARE_CODE\timesync\main\timesync.c
`22 See line 588 in file SOFTWARE_CODE\timesync\main\timesync.c
`23 Implemented at lines 737 to 854 in file SOFTWARE_CODE\timesync\main\timesync.c
`24 See line 745 in file SOFTWARE_CODE\timesync\main\timesync.c
`25 See lines 798 to 803 in file SOFTWARE_CODE\timesync\main\timesync.c
`26 Implemented at lines 225 to 358 in file SOFTWARE_CODE\timesync\main\timesync.c
`
`4
`
`Page 4 of 31
`
`Implicit Exhibit 2081
`Sonos v. Implicit, IPR2018-0766, -0767
`
`
`
`U.S. Patent No.
`7,391,791
`having a slave device
`time and a slave
`rendering time;
`
`
`
`CONTAINS PROTECTIVE ORDER MATERIAL
`
`Application of Claim Language to Source Code
`
`
`The Implicit Source Code also designates the remaining devices as slave rendering
`devices. One such slave rendering device is set up to receive at port 9002 encoded
`master rendering times and encoded PCM audio frames sent by the master rendering
`device.27 Another slave rendering device is set up to receive at port 8002 encoded
`master rendering times and encoded RGB video frames sent by the master rendering
`device.28
`
`Each slave rendering device has a slave rendering time. Specifically, each slave
`device runs a clocksync bead that maintains a rendering clock RenderClock that
`tracks the rendering time for the slave device.29 Furthermore, each slave device runs
`an audiosync bead that adjusts the slave device rendering time according to the
`rendering time differential between the master rendering device and the slave
`device.30,31
`
`Each slave rendering device also contains a slave device time that is added to UDP
`packets that the slave rendering device transmits over the IP network using the
`timesync bead.32 . As discussed earlier (see Claim 1, Limitation 1a), the
`timesync bead implements a function TimeSync_Send that periodically
`
`
`27 Defined at lines 3 to 25 in file SOFTWARE_STRUCTURE\syncaudio.rule
`28 Defined at lines 6 to 37 in file SOFTWARE_STRUCTURE\videoclient.rule
`29 See lines 11 to 15 in file SOFTWARE_STRUCTURE\syncaudio.rule
`30 See lines 16 to 19 in file SOFTWARE_STRUCTURE\syncaudio.rule
`31 See lines 692 to 777 in file SOFTWARE_CODE\audiosync\main\audiosync.c
`32 Defined at lines 16 to 26 in file SOFTWARE_STRUCTURE\timesync.rule
`
`5
`
`Page 5 of 31
`
`Implicit Exhibit 2081
`Sonos v. Implicit, IPR2018-0766, -0767
`
`
`
`U.S. Patent No.
`7,391,791
`
`[1c] receiving the
`content for rendering by
`the master and at least
`one slave device;
`
`
`CONTAINS PROTECTIVE ORDER MATERIAL
`
`Application of Claim Language to Source Code
`broadcasts the device times over the IP network.33 Function TimeSync_Send calls
`function SOS_Clock_TickGet to obtain the device times.34 When the timesync
`bead runs on the slave rendering device, these times correspond to slave device times.
`This device time is used by the service timesync to determine the time differential
`between the master and the slave time domains.35,36 The timesync bead implements
`a function TimeSync_UpdateHandler that receives UDP packets sent to port
`9123. Function TimeSync_UpdateHandler calls function
`SOS_Clock_TickGet to obtain the device time when the device receives a UDP
`packet. When the timesync bead is running on the master rendering device, this call
`to function SOS_Clock_TickGet provides the master device times.37 Afterwards,
`function TimeSync_UpdateHandler and calls function
`TimeSync_HostUpdate to determine the time differential between the master and
`the slave time domains using the master device time and slave device time.
`
`
`The master device in the distributed system specified within file videomulti.rule
`receives combined audio and video content stream to be rendered by the master device
`at port 8013.38 The distributed system that also includes plurality of slave rendering
`devices that receive the content for rendering. One of these slave rendering devices
`
`
`33 Implemented at lines 519 to 603 in file SOFTWARE_CODE\timesync\main\timesync.c
`34 See line 588 in file SOFTWARE_CODE\timesync\main\timesync.c
`35 Defined at lines 5 to 13 in file SOFTWARE_STRUCTURE\timesync.rule
`36 See file SOFTWARE_CODE\timesync\main\timesync.c
`37 See line 745 in file SOFTWARE_CODE\timesync\main\timesync.c
`38 See line 9 in file SOFTWARE_STRUCTURE\videomulti.rule
`
`6
`
`Page 6 of 31
`
`Implicit Exhibit 2081
`Sonos v. Implicit, IPR2018-0766, -0767
`
`
`
`U.S. Patent No.
`7,391,791
`
`CONTAINS PROTECTIVE ORDER MATERIAL
`
`Application of Claim Language to Source Code
`
`receives and renders PCM audio content stream in synchronization with the master
`rendering device.39 Another of these slave rendering devices receives and renders the
`video content stream in synchronization with the master rendering device.40 The
`master rendering device sends a plurality of encoded audio PCM frames and the
`corresponding master rendering times indicative of the statuses of the rendering of the
`first content stream by the master rendering device to the slave rendering device
`rendering audio content stream at port 9002.41,42 Similarly, the master rendering
`device sends a plurality of encoded video RGB video frames and the corresponding
`master rendering times indicative of the statuses of the rendering of the first content
`stream by the master rendering device to the slave rendering device rendering video
`content stream at port 8002.43,44
`
`As discussed earlier (see Claim 1, Limitation 1a), upon receiving the combined audio
`and video content stream, the master rendering device uses the avidemux bead to
`separate the combined audio and video stream into separate audio and video streams.
`Afterwards, the master rendering devices processes the video content stream using the
`bmptorgb bead to render decoded RGB video frames.45,46 Specifically, functions
`
`
`39 Defined at lines 3 to 25 in file SOFTWARE_STRUCTURE\syncaudio.rule
`40 Defined at lines 7 to 35 in file SOFTWARE_STRUCTURE\videoclient.rule
`41 See lines 123 to 127 in file SOFTWARE_STRUCTURE\videomulti.rule
`42 See line 4 in file SOFTWARE_STRUCTURE\syncaudio.rule
`43 See lines 123 to 127 in file SOFTWARE_STRUCTURE\videomulti.rule
`44 See line 4 in file SOFTWARE_STRUCTURE\syncaudio.rule
`45 See lines 16 to 20 in file SOFTWARE_STRUCTURE\videomulti.rule
`46 See file SOFTWARE_CODE\bmptorgb\main\bmptorgb.c
`
`7
`
`Page 7 of 31
`
`Implicit Exhibit 2081
`Sonos v. Implicit, IPR2018-0766, -0767
`
`
`
`U.S. Patent No.
`7,391,791
`
`CONTAINS PROTECTIVE ORDER MATERIAL
`
`Application of Claim Language to Source Code
`BmpToRgb_MessageHandler,47 DecodeFrame,48 and
`BmpDecoder_FrameDecode49 of bead bmptorgb decode the video content
`stream to render the decoded RGB video frames. Once the video frame has been
`rendered into an RGB video frame, the master rendering device uses a fanout bead
`to distribute the decoded video frame to two processing pathways or fanouts.50,51
`Specifically, function FanOut_MessageHandler52 of bead fanout distributes
`decoded RGB video frames to the two processing pathways. Within one of these
`processing pathways,53 the master rendering device uses the clocksync bead to
`encode the master rendering times.54,55 Specifically, functions
`ClockSync_EncodeHandler56 and ClockSync_Encode57 to encode the
`master rendering times.58 After encoding the master rendering time, the master
`
`
`47 Implemented at lines 306 to 335 in file SOFTWARE_CODE\bmptorgb\main\bmptorgb.c
`48 Implemented at lines 180 to 283 in file SOFTWARE_CODE\bmptorgb\main\bmptorgb.c
`49 Implemented at lines 366 to 407 in file SOFTWARE_CODE\bmptorgb\main\bmpdecoder.c
`50 See lines 21 to 25 in file SOFTWARE_STRUCTURE\videomulti.rule
`51 See file SOFTWARE_CODE\fanout\main\fanout.c
`52 Implemented at lines 180 to 199 in file SOFTWARE_CODE\fanout\main\fanout.c
`53 See lines 30 to 49 in file SOFTWARE_STRUCTURE\videomulti.rule
`54 See lines 32 to 35 in file SOFTWARE_STRUCTURE\videomulti.rule
`55 See file SOFTWARE_CODE\timesync\main\clocksync.c
`56 Implemented at lines 570 to 602 in file SOFTWARE_CODE\timesync\main\clocksync.c
`57 Implemented at lines 244 to 348 in file SOFTWARE_CODE\timesync\main\clocksync.c
`58 See lines 280 to 294 in file SOFTWARE_CODE\timesync\main\clocksync.c
`
`8
`
`Page 8 of 31
`
`Implicit Exhibit 2081
`Sonos v. Implicit, IPR2018-0766, -0767
`
`
`
`CONTAINS PROTECTIVE ORDER MATERIAL
`
`U.S. Patent No.
`7,391,791
`
`Application of Claim Language to Source Code
`rendering device encodes the decoded RGB video frames using the framer bead.59,60
`Specifically, function Framer_EncodeHandler61 of bead framer encodes the
`decoded RGB video frame. Afterwards, the master rendering device transfers the
`master rendering time and the encoded RGB video frame to over the IP network,
`which sends the encoded master rendering times and the encoded RGB video frame to
`a remote network port 8002 using the User Datagram Protocol (“UDP”).62
`
`As discussed earlier, the master rendering device uses the avidemux bead to split the
`combined audio and video content stream into separate audio and video streams. Once
`the audio and video content stream has been separated, the master rendering device
`uses another instance of the fanout bead to distribute the audio content stream to the
`two processing pathways.63 The first processing pathway corresponding to index
`FanoutIndex 0 outputs the audio content stream using the speaker bead to the
`audio output device of the master rendering device.64,65 Within second processing
`pathway,66 the master rendering device uses the clocksync bead to encode the
`master rendering times. After encoding the master rendering time, the master
`rendering device encodes the PCM audio frames using the framer bead. Afterwards,
`the master rendering device transfers the master rendering time and the encoded PCM
`
`59 See lines 36 to 39 in file SOFTWARE_STRUCTURE\videomulti.rule
`60 See file SOFTWARE_CODE\framer\main\framer.c
`61 Implemented at lines 230 to 269 in file SOFTWARE_CODE\framer\main\framer.c
`62 See line 43 in file SOFTWARE_STRUCTURE\videomulti.rule
`63 See lines 91 to 97 in file SOFTWARE_STRUCTURE\videomulti.rule
`64 See lines 104 to 107 in file SOFTWARE_STRUCTURE\videomulti.rule
`65 See file SOFTWARE_CODE\speaker\main\speaker.c
`66 See lines 113 to 132 in file SOFTWARE_STRUCTURE\videomulti.rule
`
`9
`
`Page 9 of 31
`
`Implicit Exhibit 2081
`Sonos v. Implicit, IPR2018-0766, -0767
`
`
`
`U.S. Patent No.
`7,391,791
`
`CONTAINS PROTECTIVE ORDER MATERIAL
`
`Application of Claim Language to Source Code
`
`audio frame to for transmission over an IP network to a remote network port 9002
`using UDP.67
`
`Among other devices, the distributed system described in the rules files specifies a
`slave rendering device that renders RGB video frames in synchronizations with the
`master rendering device.68 This slave rendering device receives the encoded master
`rendering times and the encoded RGB video frame at its port 8002.69 Afterwards, the
`video display device decodes the encoded RGB frames sent by the master rendering
`device using the framer bead.70 Specifically, function
`Framer_DecodeHandler71 of bead framer decodes the decoded RGB frame.
`Afterwards, the video display device displays the decoded RGB frames using the
`rgbvideo bead.72,73 Specifically, functions RgbVideo_MessageHandler74 and
`DisplayFrame75 of bead rgbvideo display the decoded RGB frame.
`
`Furthermore, the distributed system described in the rules files specifies another slave
`rendering device that renders PCM audio frames in synchronizations with the master
`
`
`67 See line 43 in file SOFTWARE_STRUCTURE\videomulti.rule
`68 Defined at lines 6 to 37 in file SOFTWARE_STRUCTURE\videoclient.rule
`69 See line 8 in file SOFTWARE_STRUCTURE\videoclient.rule
`70 See lines 10 to 14 in file SOFTWARE_STRUCTURE\videoclient.rule
`71 Implemented at lines 271 to 349 in file SOFTWARE_CODE\framer\main\framer.c
`72 See lines 30 to 33 in file SOFTWARE_STRUCTURE\videoclient.rule
`73 See file SOFTWARE_CODE\rgbvideo\main\rgbvideo.c
`74 Implemented at lines 464 to 524 in file SOFTWARE_CODE\rgbvideo\main\rgbvideo.c
`75 Implemented at lines 347 to 395 in file SOFTWARE_CODE\rgbvideo\main\rgbvideo.c
`
`10
`
`Page 10 of 31
`
`Implicit Exhibit 2081
`Sonos v. Implicit, IPR2018-0766, -0767
`
`
`
`U.S. Patent No.
`7,391,791
`
`[1d] sending from the
`master device to the at
`least one slave device
`an indication of when
`the master device
`renders content
`corresponding to the
`master rendering time;
`
`
`[1e] determining a
`master device time
`domain, a slave device
`time domain, and a
`source time domain;
`
`
`CONTAINS PROTECTIVE ORDER MATERIAL
`
`Application of Claim Language to Source Code
`
`rendering device.76 This slave rendering device receives the encoded master rendering
`times and the encoded PCM audio frame at its port 9002.77
`
`
`See analysis for Claim 1, Limitation 1c.
`
`As described above, the master device sends to the slave devices an indication of when
`the master device renders content corresponding to the master rendering time.
`Through invoking the clocksync bead, the mater device encodes a master rendering
`time that indicates when the master device renders.78,79 The master device then sends
`that encoded master rendering time to the slave rendering devices as described above.80
`
`
`
`See analysis for Claim 1, Limitation 1a and 1b.
`
`The distributed system discussed above includes a source device that transmits the
`combined audio and video content stream to the master device at port 8013.81 This
`source device includes a source device clock that generates source device times that
`
`
`76 Defined at lines 3 to 25 in file SOFTWARE_STRUCTURE\syncaudio.rule
`77 See line 5 in file SOFTWARE_STRUCTURE\syncaudio.rule
`78 See lines 32 to 35 in file SOFTWARE_STRUCTURE\videomulti.rule
`79 See file SOFTWARE_CODE\timesync\main\clocksync.c
`80 See line 43 in file SOFTWARE_STRUCTURE\videomulti.rule
`81 See line 9 in file SOFTWARE_STRUCTURE\videomulti.rule
`
`11
`
`Page 11 of 31
`
`Implicit Exhibit 2081
`Sonos v. Implicit, IPR2018-0766, -0767
`
`
`
`U.S. Patent No.
`7,391,791
`
`CONTAINS PROTECTIVE ORDER MATERIAL
`
`Application of Claim Language to Source Code
`
`determine the source time domain.82 The master device that receives the combined
`audio and video content stream from the source device contains a master device clock
`that generates master device times that determine the master time domain (see Claim 1,
`Limitation 1a). The master device sends the encoded rendering times and the encoded
`RGB video frames and PCM audio frames to the slave devices using network ports
`8002 and 9002 respectively.83,84 The slave device that renders PCM audio frames
`receive the encoded data sent by the master device at port 9002.85 The slave device
`that renders RGB video frames receive the encoded data sent by the master device at
`port 8002.86 As discussed earlier (see Claim 1, Limitation 1b), each slave device
`contains a slave device clock accessed using function SOS_Clock_TickGet that
`generates slave device times that determine the slave time domain.87,88 Furthermore,
`this distributed system implements a timesync bead that determines the time
`differential between the device time domains of the various devices, including the
`source, master, and the slave devices.89
`
`The distributed system described above includes a source device that transmits
`combined audio and video content stream to the master rendering device and, through
`
`
`82 See lines 7 to 79 in file \test\demo\source.pl
`83 See lines 40 to 44 in file SOFTWARE_STRUCTURE\videomulti.rule
`84 See lines 123 to 127 in file SOFTWARE_STRUCTURE\videomulti.rule
`85 See line 5 in file SOFTWARE_STRUCTURE\syncaudio.rule
`86 See line 8 in file SOFTWARE_STRUCTURE\videoclient.rule
`87 See line 588 in file SOFTWARE_CODE\timesync\main\timesync.c
`88 See line 745 in file SOFTWARE_CODE\timesync\main\timesync.c
`89 See file SOFTWARE_STRUCTURE\timesync.rule
`
`12
`
`Page 12 of 31
`
`Implicit Exhibit 2081
`Sonos v. Implicit, IPR2018-0766, -0767
`
`
`
`U.S. Patent No.
`7,391,791
`
`CONTAINS PROTECTIVE ORDER MATERIAL
`
`Application of Claim Language to Source Code
`
`the master rendering device, a plurality of slave rendering devices.90,91 As discussed
`earlier (see Claim 1, Limitations 1a and 1b), each of these devices contains a device
`clock that generates device times that determines the time domains of the source,
`master, and slave devices.92
`
`The Implicit Source Code implements a timesync bead that runs continuously and
`determines the time differentials between the time domains of various devices
`including the source, master, and the slave device, using their corresponding device
`times. As discussed earlier (see Claim 1, Limitation 1a), the timesync bead
`implements function TimeSync_UpdateHandler that calls function
`TimeSync_HostUpdate to determine the time domain differential between the two
`devices under consideration, including a master and a slave device. Specifically,
`function TimeSync_HostUpdate determines the time domain differential using
`the formula ((t1-t0)+(t2-t3))/2, where t0 is the time at which a sending
`device sends a packet to the recipient device, t1 is the time at which a recipient device
`receives the sent packet, t2 is the time at which the recipient device sends a response
`to the sending device, and t3 is the time at which the sending device receives a
`response from the recipient device.93 Function TimeSync_HostUpdate
`determines the time domain differential between two devices and stores the time
`domain differential in a data structure info->Offset corresponding to the device
`that sends a packet a time t0.94
`
`90 See lines 24 to 99 in file SOFTWARE_STRUCTURE\videomulti.rule
`91 See lines 7 to 79 in file \test\demo\source.pl
`92 See file SOFTWARE_STRUCTURE\timesync.rule
`93 See lines 243 to 319 in file SOFTWARE_CODE\timesync\main\timesync.c
`94 See lines 327 to 328 in file SOFTWARE_CODE\timesync\main\timesync.c
`
`13
`
`Page 13 of 31
`
`Implicit Exhibit 2081
`Sonos v. Implicit, IPR2018-0766, -0767
`
`
`
`U.S. Patent No.
`7,391,791
`
`[1f] determining
`whether a time domain
`differential exists
`between the master
`rendering time, the
`slave rendering time;
`and
`
`
`
`
`CONTAINS PROTECTIVE ORDER MATERIAL
`
`Application of Claim Language to Source Code
`
`
`
`See analysis for Claim 1, Limitation 1e.
`
`As discussed above, the timesync bead determines the time domain differential
`between the master using the formula ((t1-t0)+(t2-t3))/2, where t0 is the
`time at which a sending device sends a packet to the recipient device, t1 is the time at
`which a recipient device receives the sent packet, t2 is the time at which the recipient
`device sends a response to the sending device, and t3 is the time at which the sending
`device receives a response from the recipient device.95 Function
`TimeSync_HostUpdate determines the time domain differential between two
`devices and stores the time domain differential in a data structure info->Offset
`corresponding to the device that sends a packet a time t0.96
`
`See analysis for Claim 1, Limitation 1g for how the time domain differential is used to
`adjust the rendering of the content at the slave device.
`
`
`The Implicit Source Code specifies a slave rendering device that render PCM audio
`frames in synchronization with rendering of the combined audio and video content
`stream by the master rendering device. This slave rendering device receives the
`encoded master rendering times and the encoded PCM audio frames. The slave
`rendering device decodes the master rendering times using the clocksync97 bead
`
`[1g] adjusting, based on
`the received indication,
`the rendering of the
`content at the at least
`one slave device within
`the slave device time
`
`95 See lines 243 to 319 in file SOFTWARE_CODE\timesync\main\timesync.c
`96 See lines 327 to 328 in file SOFTWARE_CODE\timesync\main\timesync.c
`97 See lines 11 to 15 in file SOFTWARE_STRUCTURE\syncaudio.rule
`
`14
`
`Page 14 of 31
`
`Implicit Exhibit 2081
`Sonos v. Implicit, IPR2018-0766, -0767
`
`
`
`U.S. Patent No.
`7,391,791
`domain and in
`proportion to the time
`domain differential
`when present to account
`for variation between
`when the master device
`and the at least one
`slave device to render
`content that should be
`rendered at the same
`time.
`
`
`CONTAINS PROTECTIVE ORDER MATERIAL
`
`Application of Claim Language to Source Code
`and decodes the encoded audio media stream using the framer bead.98 The
`clocksync bead at the slave device adjusts the master rendering time in proportion
`to the time domain differential that exists between the master and the slave time
`domain. 99 The slave rendering device uses the audiosync bead to smoothen a
`rendering time differential that exists between the master rendering device and the
`slave devices such that the PCM audio frames are rendered at the slave rendering
`device in synchronization with the rendering of the combined audio and video content
`stream at the master rendering device.100,101 The smoothening of the rendering time
`differential includes calculations using the plurality of master rendering times.102 This
`enables the slave device to render audio media content at the same time when the
`content is rendered by the master device.
`
`As discussed earlier (see Claim 1, Limitation 1b), the Implicit Source Code specifies a
`distributed system that contains a slave device that renders PCM audio frames in
`synchronization with the master rendering device. This slave rendering device
`receives the encoded master rendering times and the encoded PCM audio frames at
`port 9002. This slave rendering device uses the clocksync bead that decodes the
`received master rendering times.103,104 Furthermore, the clocksync service
`determines if a time domain differential exists between the master time domain and the
`
`
`98 See lines 7 to 10 in file SOFTWARE_STRUCTURE\syncaudio.rule
`99 See lines 462 to 469 in file SOFTWARE_CODE\timesync\main\clocksync.c
`100 See lines 16 to 19 in file SOFTWARE_STRUCTURE\syncaudio.rule
`101 See lines 462 to 685 in file SOFTWARE_CODE\audiosync\main\audiosync.c
`102 See lines 160 to 192 in file SOFTWARE_CODE\audiosync\main\audiosync.c
`103 See lines 11 to 15 in file SOFTWARE_STRUCTURE\syncaudio.rule
`104 See file SOFTWARE_CODE\timeksync\main\clocksync.c
`
`15
`
`Page 15 of 31
`
`Implicit Exhibit 2081
`Sonos v. Implicit, IPR2018-0766, -0767
`
`
`
`U.S. Patent No.
`7,391,791
`
`CONTAINS PROTECTIVE ORDER MATERIAL
`
`Application of Claim Language to Source Code
`slave time domain by calling function TimeSync_OffsetGet105,106 and adjusts the
`master rendering time in proportion to the time domain differential that exists between
`the master and the slave time domain.107 Specifically, the clocksync bead
`implements a function ClockSync_DecodeHandler108 that calls function
`ClockSync_Decode109,110 to decode the master rendering.111 Function
`ClockSync_Decode also determines if a time domain differential exists between
`the master and the slave device time domains and if such a differential exists, it adjusts
`the master rendering time in proportion to the time domain differential between the
`master and the slave device time domains. Afterwards, function
`ClockSync_Decode updates the master rendering time at the slave rendering
`device.112 These adjusted master rendering times are indicative of statuses of
`rendering the combined audio and video content stream at the master rendering device
`at different times.
`
`The slave rendering device uses framer bead113,114 to decode the encoded PCM audio
`
`
`105 See line 409 in file SOFTWARE_CODE\timesync\main\clocksync.c
`106 Implemented at lines 361 to 388 in file SOFTWARE_CODE\timesync\main\timesync.c
`107 See lines 462 to 469 in file SOFTWARE_CODE\timesync\main\clocksync.c
`108 Implemented at lines 604 to 635 in file SOFTWARE_CODE\timesync\main\clocksync.c
`109 See lines 618 to 622 in file SOFTWARE_CODE\timesync\main\clocksync.c
`110 Implemented at lines 618 to 635 in file SOFTWARE_CODE\timesync\main\clocksync.c
`111 See lines 457 to 486 in file SOFTWARE_CODE\timesync\main\clocksync.c
`112 See lines 476 to 480 in file SOFTWARE_CODE\timesync\main\clocksync.c
`113 See lines 7 to 10 in file SOFTWARE_STRUCTURE\syncaudio.rule
`114 See file SOFTWARE_CODE\framer\main\framer.c
`
`16
`
`Page 16 of 31
`
`Implicit Exhibit 2081
`Sonos v. Implicit, IPR2018-0766, -0767
`
`
`
`U.S. Patent No.
`7,391,791
`
`CONTAINS PROTECTIVE ORDER MATERIAL
`
`Application of Claim Language to Source Code
`frames received by the slave device. The framer bead implements a function
`Framer_DecodeHandler to deco