throbber
U.S. Patent No.
`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

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