throbber

`
`I, Roman Chertov, declare and state as follows:
`
`1.
`
`I have been retained as an expert witness for the Inter Partes Review
`
`(“IPR”) of both U.S. Patent No. 7,391,791 (the “‘791 Patent”) (Ex.1001) and U.S.
`
`Patent No. 8,942,252 (the “‘252 Patent”), which have been initiated by Sonos, Inc.
`
`(“Sonos”) against Implicit, LLC (“Implicit”).
`
`2.
`
`I previously submitted two Declarations dated March 9, 2018
`
`(referred to herein as my “Opening Declarations”) in connection with Sonos’s
`
`Petitions for IPR of the ‘791 and ‘252 Patents.
`
`3.
`
`I understand that, on September 19, 2018, the Patent Trial and Appeal
`
`Board (or “the Board” for short) instituted IPRs of both the ‘791 Patent and the
`
`‘252 Patent.
`
`4.
`
`I further understand that, on December 18, 2019, Implicit filed its
`
`Patent Owner’s Responses (or “PORs” for short) in the IPRs of both the ‘791
`
`Patent and the ‘252 Patent along with a common set of Exhibits, which include
`
`source code produced by Implicit and an Expert Declaration of Atif Hashmi, Ph.D
`
`(Ex. 2080-2082) in which Dr. Hashmi expressed his opinion that the source code
`
`produced by Implicit practices the Challenged Claims of both the ‘791 Patent and
`
`the ‘252 Patent.
`
`5.
`
`I have now been asked to review the source code produced by Implicit
`
`and the Expert Declaration of Dr. Hashmi and then respond to Dr. Hashmi’s
`
`
`
`
`Page 1 of 45
`
`SONOS EXHIBIT 1022
`IPR OF U.S. Pat. No. 8,942,252
`
`

`

`
`
`opinion that the source code produced by Implicit practices the Challenged Claims
`
`of the ‘791 and ‘252 Patents. For the reasons set forth below, I disagree with Dr.
`
`Hashmi’s opinion that the source code produced by Implicit practices the
`
`Challenged Claims of the ‘791 and ‘252 Patents.
`
`I.
`
`BACKGROUND & QUALIFICATIONS
`
`6. My background and qualifications are set forth in my Opening
`
`Declarations.
`
`II. COMPENSATION
`
`7.
`
`As set forth in my Opening Declarations, I am being compensated for
`
`the time that I spend consulting on this IPR at a rate of $270 per hour, and my
`
`compensation does not depend on the outcome of these IPR proceedings.
`
`III. MATERIALS CONSIDERED
`
`8.
`
`In addition to the material identified in my Opening Declarations, I
`
`have now reviewed the source code and associated documentation (including Ex.
`
`2021) produced by Implicit, as well as the Expert Declaration of Dr. Hashmi (Ex.
`
`2080-2082).
`
`IV. LEGAL STANDARDS
`
`9.
`
`As I explained in my Opening Declarations, I am not an attorney and
`
`will not offer any opinions on the law. That said, I have been informed of various
`
`2
`
`
`Page 2 of 45
`
`SONOS EXHIBIT 1022
`IPR OF U.S. Pat. No. 8,942,252
`
`

`

`
`
`principles concerning invalidity of a patent, as well as other patent-related legal
`
`issues.
`
`V. LEVEL OF ORDINARY SKILL IN THE ART
`
`10. As set forth in my Opening Declarations, it is my opinion that, at the
`
`time of the alleged invention, a person having ordinary skill in the art
`
`(“PHOSITA”) in the technology area that is relevant to the ‘791 and ‘252 Patents
`
`would have had the equivalent of a four-year degree from an accredited institution
`
`(typically denoted as a B.S. degree) in computer science, computer engineering,
`
`electrical engineering, or an equivalent thereof, and approximately 2-4 years of
`
`professional experience in the fields of networked systems and networked-based
`
`applications, or an equivalent level of skill, knowledge, and experience.
`
`11.
`
`I applied this same level of ordinary skill in the art when formulating
`
`the opinions set forth herein.
`
`VI. CLAIM CONSTRUCTION
`
`12. As set forth in my Opening Declarations, I used the “broadest
`
`reasonable constructions” proposed in Sonos’s Petitions for IPR of the ‘791 and
`
`‘252 Patent, and to the extent that a claim construction was not provided for a
`
`particular claim term or phrase, I used the ordinary and customary meaning of the
`
`word(s), as would be understood by a PHOSITA in the context of the field of the
`
`invention, at the time of the invention, to construe such a claim term or phrase.
`
`3
`
`
`Page 3 of 45
`
`SONOS EXHIBIT 1022
`IPR OF U.S. Pat. No. 8,942,252
`
`

`

`
`
`13.
`
`I interpreted the claims in the same way when formulating my
`
`opinions set forth herein.
`
`VII. BRIEF INTRODUCTION TO DR. HASHMI’S OPINIONS
`
`14. According to Dr. Hashmi, the source code produced by Implicit
`
`(which Dr. Hashmi refers to as the “Implicit Source Code”) “specifies a distributed
`
`system” in which devices execute “a method for synchronizing rendering of
`
`content provided by a source” between a “mater rendering device” and a “slave
`
`rendering device.” See, e.g., Ex. 2081 at p. 1-4.
`
`15. Dr. Hashmi contends that the “master rendering device” (or the
`
`“master device” for short) is a particular rendering device in the “distributed
`
`system” specified by the Implicit Source Code that functions to receive media
`
`content from a source, render the received media content, and then encode and
`
`send the received media content along with corresponding “master rendering
`
`times” to one or more other rendering devices in the “distributed system.” See,
`
`e.g., Ex. 2080 at ¶¶ 35-36, 51-54; Ex. 2081 at p. 1-10.
`
`16.
`
`In turn, Dr. Hashmi contends that a “slave rendering device” (or a
`
`“slave device” for short) is a rendering device in the “distributed system” specified
`
`by the Implicit Source Code that functions to receive the encoded “master
`
`rendering times” and the encoded media content from the “master rendering
`
`device” and then adjust the received media content to “render synchronized
`
`4
`
`
`Page 4 of 45
`
`SONOS EXHIBIT 1022
`IPR OF U.S. Pat. No. 8,942,252
`
`

`

`
`
`[media] with the master device.” See, e.g., Ex. 2080 at ¶¶ 35-36, 55; Ex. 2081 at p.
`
`4-7, 10-12, 14-18.
`
`17.
`
`In my discussion of the Implicit Source code below, I have used the
`
`labels “master” and “slave” in the same way used by Dr. Hashmi in order to make
`
`it clear which device I am referring to when responding to Dr. Hashmi’s opinions.
`
`However, my use of these labels should not be taken to mean that I consider the
`
`devices specified in the Implicit Source Code to be “master” and “slave” rendering
`
`devices as those terms are used in the Challenged Claims of the ‘791 and ‘252
`
`Patents.
`
`18. Further, in my discussion of the Implicit Source Code below, I do not
`
`intend any of my descriptions of the functionality to suggest that the Implicit
`
`Source Code was actually able to be compiled or run either in 2001 or since that
`
`time. Rather, my discussion below is merely intended to articulate my
`
`understanding of how the Implicit Source Code was designed to function, without
`
`regard to whether that Implicit Source code was ever compiled or run.
`
`VIII. IMPLICIT SOURCE CODE DOES NOT PRACTICE ‘791 PATENT
`
`19.
`
`I respectfully disagree with Dr. Hashmi’s opinion that the Implicit
`
`Source Code practices the Challenged Claims of the ‘791 Patent for at least the
`
`following reasons, which apply to all Challenged Claims.
`
`5
`
`
`Page 5 of 45
`
`SONOS EXHIBIT 1022
`IPR OF U.S. Pat. No. 8,942,252
`
`

`

`
`
`A. The Implicit Source Code Fails to Practice the “Rendering Time”
`Limitations of the Challenged Claims of the ‘791 Patent
`
`
`20. Every Challenged Claim of the ‘791 Patent recites limitations directed
`
`to tracking and using “rendering times” of the designated “master” and “slave”
`
`rendering devices in order to synchronize the rendering of content at those
`
`rendering devices.
`
`21. For instance, Challenged Claims 1-3, 6-9, and 12 each require that (a)
`
`the “master device” has a “master rendering time,” (b) the “at least one slave
`
`device” has a “slave rendering time,” (c) the “master device” sends the “at least
`
`one slave device” “an indication of when the master device renders content
`
`corresponding to the master rendering time,” and (d) there is a determination of
`
`“whether a time domain differential exists between the master rendering time, the
`
`slave rendering time.” Ex. 1001 (‘791 Patent) at 8:25-53 (emphasis added).
`
`22. Further, Challenged Claims 16 and 19 each require that (a) “each
`
`device” participating in the synchronized rendering of content has a “rendering
`
`time,” including a “master device having a master rendering time” and “one or
`
`more slave devices having a slave rendering time,” (b) the “master device” sends
`
`the “one or more slaves” “a master device time corresponding to the master
`
`rendering time of the master device,” (c) there is a determination of “at least one
`
`time domain differential between the master rendering time and the slave
`
`rendering time between the master device and the one or more slave devices,” and
`
`6
`
`
`Page 6 of 45
`
`SONOS EXHIBIT 1022
`IPR OF U.S. Pat. No. 8,942,252
`
`

`

`
`
`(d) there is an adjustment of “the rendering of the content at the one or more slave
`
`devices to account for a difference in the slave rendering time and the master
`
`rendering time.” Id. at 9:45-10:6 (emphasis added).
`
`23. Further yet, Challenged Claims 23-25 each require that (a) “each
`
`device” participating in the synchronized rendering of content has a “rendering
`
`time,” including a “master device having a master rendering time” and “one or
`
`more slave devices having slave rendering time,” and (b) there is a calculation of
`
`“a time domain difference between the master rendering time of the master device
`
`and the slave rendering time of the slave device.” Id. at 10:37-52 (emphasis
`
`added).
`
`24. The construction of “rendering time” I have applied and used in
`
`formulating my opinions is “a time measure of the amount of content that has
`
`already been rendered by a given rendering device.” I understand that Implicit and
`
`Dr. Hashmi have not challenged this construction of “rendering time.”
`
`25. When applying this construction of “rendering time” to the Implicit
`
`Source Code, it is my opinion that the Implicit Source Code fails to practice any of
`
`the “rendering time” limitations of the Challenged Claims of the ‘791 Patent.
`
`26.
`
`Indeed, based on my review and evaluation of the Implicit Source
`
`Code, as well as Dr. Hashmi’s discussion of the Implicit Source Code in his Expert
`
`Declaration, I fail to see any evidence that the Implicit Source Code maintained “a
`
`7
`
`
`Page 7 of 45
`
`SONOS EXHIBIT 1022
`IPR OF U.S. Pat. No. 8,942,252
`
`

`

`
`
`time measure of the amount of content that has already been rendered by a given
`
`rendering device” at either a “master” device or a “slave” device.
`
`27. Further, because I fail to see any evidence that the Implicit Source
`
`Code maintained “a time measure of the amount of content that has already been
`
`rendered by a given rendering device” at a “master” device, I similarly fail to see
`
`any evidence that the Implicit Source Code practiced a function of sending a
`
`“master device time” or any other “indication” “corresponding to [a] master
`
`rendering time” from a “master” device to a “slave” device.
`
`28. Further yet, because I fail to see any evidence that the Implicit Source
`
`Code maintained “a time measure of the amount of content that has already been
`
`rendered by a given rendering device” at either a “master device” or a “slave
`
`device,” I similarly fail to see any evidence that the Implicit Source Code
`
`practiced a function of determining a “time domain differential” between a “master
`
`rendering time” of a “master device” and a “slave rendering time” of a “slave
`
`device” and then adjusting the rendering of content at the “slave device” to account
`
`for such a “time domain differential.”
`
`29.
`
`In the Claim Chart for the ‘791 Patent that is included as part of his
`
`Expert Declaration, Dr. Hashmi identifies certain aspects of the Implicit Source
`
`Code that allegedly practice the “rendering time” limitations of the Challenged
`
`Claims of the ‘791 Patent. However, I disagree that any of these aspects of the
`
`8
`
`
`Page 8 of 45
`
`SONOS EXHIBIT 1022
`IPR OF U.S. Pat. No. 8,942,252
`
`

`

`
`
`Implicit Source Code evidence that “a time measure of the amount of content that
`
`has already been rendered by a given rendering device” was maintained at either a
`
`“master” device or a “slave” device, or that such a “time measure” was otherwise
`
`used in the manner required by the Challenged Claims of the ‘791 Patent.
`
`30. For instance, in his Claim Chart for the ‘791 Patent, Dr. Hashmi
`
`contends that “the avidemux bead instantiates a master rendering clock
`IAudioClock associated with the audio content stream,” and that “[t]his 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.” Ex. 2081 at 2
`
`(emphasis added). I disagree with Dr. Hashmi’s contention here for several
`
`reasons.
`
`31. First, I disagree with Dr. Hashmi’s contention that IAudioClock is
`a “clock” that “generates” time values. To the contrary, the Implicit Source Code
`
`makes clear that IAudioClock is merely an interface structure that allows for
`modification of an instance of SAMPLECLOCK, which is itself a data structure that
`is periodically updated via the IAudioClock interface such that it contains a
`snapshot of the time value indicated by a “master” device’s system clock. See,
`
`e.g., Ex. 2086 at ln. 64-72. Hence, neither IAudioClock nor SAMPLECLOCK is
`
`9
`
`
`Page 9 of 45
`
`SONOS EXHIBIT 1022
`IPR OF U.S. Pat. No. 8,942,252
`
`

`

`
`
`a separate “clock” that “generates” time values. Various aspects of the Implicit
`
`Source Code confirm this. For instance:
`
`● The avidemux bead specifies that IAudioClock is an interface
`structure of type SOS_ISAMPLECLOCK, which is created from the
`SAMPLECLOCK_CLASS. See Ex. 2043 at ln. 105, 1009-1013; see also
`Ex. 1025 at ln. 252-258 (specifying that the SOS_ISAMPLECLOCK type
`implements an interface via function pointers). Further, the avidemux
`bead
`specifies
`that
`and
`SOS_MASTERCLOCK_NAME
`SOS_RENDERCLOCK_NAME variables at the “master” device point to
`the IAudioClock interface structure. See Ex. 2043 at ln. 447-457.
`● The sampleclock.c file implements a series of functions like
`SampleClock_FrequencySet and SampleClock_Update for
`the SAMPLECLOCK data structure. These functions get invoked via the
`SOS_ISAMPLECLOCK interface structure. See Ex. 2086 at ln. 551-611.
`● The speaker bead uses an ISampleClock interface structure of type
`SOS_ISAMPLECLOCK, and this ISampleClock interface structure is
`set via lookup of the SOS_RENDERCLOCK_NAME path attribute. See
`Ex. 2043 at ln. 253-257; Ex. 2051 at ln. 54. As a result of this function,
`the ISampleClock interface structure in the speaker bead will point
`to
`that
`the
`the same SAMPLECLOCK data structure structure
`IAudioClock points to in the avidemux bead.
`● The speaker bead specifies that when a “master” device first creates an
`interface
`to
`its
`audio
`output
`device,
`the
`SampleClock_FrequencySet function is called, which copies the
`then-current time value indicated by the “master” device’s system clock
`into the Time variable of the SAMPLECLOCK data structure using the
`following operation:
`sampleclock->Time = SOS_Clock_TickGet();
`See Ex. 2051 at ln. 406-438, Ex. 2086 at ln. 337-399.
`● The speaker bead further specifies that while a “master” device
`renders audio, the Time variable of the SAMPLECLOCK data structure is
`periodically updated with the then-current time value indicated by the
`
`10
`
`
`Page 10 of 45
`
`SONOS EXHIBIT 1022
`IPR OF U.S. Pat. No. 8,942,252
`
`

`

`
`
`same
`this
`using
`clock
`system
`device’s
`“master”
`SOS_Clock_TickGet() function, as demonstrated by the following:
`
` SOS_CLOCK_TICK
`now
`=
`SOS_Clock_TickGet();
` ...
` context->ISampleClock->Update(
` context->ISampleClock,
` now,
` sample
` );
`
`See, e.g., Ex. 2051 at ln. 484-506.
`32. Second, I disagree with Dr. Hashmi’s contention that the
`
`IAudioClock interface structure at a “master” device generates a “master
`rendering time” as the parties are construing that term for purposes of these IPR
`
`proceedings. As explained above, IAudioClock provides an interface to a
`SAMPLECLOCK data structure at the “master” device, and the Time variable of
`that SAMPLECLOCK data structure does not contain “rendering time.”
`33.
`Indeed, as noted above, the Time variable of a SAMPLECLOCK data
`structure at a “master” device is set using the SOS_Clock_TickGet()
`function, which returns the current time value indicated by the “master” device’s
`
`system clock, or in other words, the “master” device’s system time. See Ex. 2051
`
`at ln. 406-438, 484-506; Ex. 2086 at ln. 337-399.1 However, a “master” device’s
`
`
`1 I note that in the speaker bead, there is an alternative operation for determining
`the Time variable of a SAMPLECLOCK data structure at a “master” device when
`samplesQueued > samplesPlayed, which is:
`
`11
`
`
`Page 11 of 45
`
`SONOS EXHIBIT 1022
`IPR OF U.S. Pat. No. 8,942,252
`
`

`

`
`
`system time does not provide “a time measure of the amount of content that has
`
`already been rendered by [the] rendering device.” See, e.g., Ex. 2051 at ln. 406-
`
`438, Ex. 2086 at ln. 337-399.
`
`34. To the contrary, depending on the operating system of a rendering
`
`device, the system time returned by the SOS_Clock_TickGet() function
`would reflect the system clock’s measure of the amount of time that has passed
`
`since an arbitrary start date/time such as January 1, 1970 at 00:00:00 (for Unix) or
`
`the date/time when the device’s operating system started (for Windows2) – which
`
`bears no relationship to “the amount of content that has already been rendered by
`
`[the] rendering device.” Or put another way, a rendering device’s system time is
`
`measured from a start date/time that is entirely independent of the rendering
`
`device’s rendering of content, and as a result, the system time returned by the
`
`
`
`
`
`
`
`
`now += (samplesQueued - samplesPlayed) *
`SOS_MSPERSECOND / context->Format.Frequency;
`
`Based on my understanding of the samplesPlayed and samplesQueued
`variables, it is not clear to me that this alternative operation would ever be
`executed, but even if it were, the foregoing confirms that the Time variable of a
`SAMPLECLOCK data structure at a “master” device would be set to an adjusted
`version of the “master” device’s system time, which is not a “rendering time.” See
`Ex. 2051 at ln. 487-498.
`2 See https://docs.microsoft.com/en-us/windows/desktop/api/timeapi/nf-timeapi-
`timegettime.
`
`12
`
`
`Page 12 of 45
`
`SONOS EXHIBIT 1022
`IPR OF U.S. Pat. No. 8,942,252
`
`

`

`
`
`SOS_Clock_TickGet() function provides no indication of “the amount of
`content that has already been rendered by [the] rendering device.”
`
`35. Thus, contrary to Dr. Hashmi’s contention, the IAudioClock
`interface structure defined in the Implicit Source Code did not generate or
`
`otherwise provide an interface to a “master rendering time” as the parties are
`
`construing that term for purposes of these IPR proceedings.
`
`36.
`
`In his Claim Chart for the ‘791 Patent, Dr. Hashmi also contends that
`
`a “master” device “uses the clocksync bead to encode the master rendering
`times” that are sent to the “slave” devices. Ex. 2081 at p. 8-9, 11 (emphasis
`
`added). I disagree – the time value encoded by the clocksync bead is not a
`“master rendering time” as the parties have construed that term for purposes of this
`
`IPR, because it is not “a time measure of the amount of content that has already
`
`been rendered by [the] rendering device.” Rather, the Implicit Source Code makes
`
`clear that the time value encoded by the clocksync bead at a “master” device
`would have been an adjusted system time of the “master” device – which does not
`
`provide “a time measure of the amount of content that has already been rendered
`
`by [the] rendering device” for the same reasons discussed above.
`
`37. The portion of the clocksync bead that would have served to
`encode the time value at a “master” device – which the Implicit Source Code refers
`
`to as “master epoch” – is reproduced below:
`
`13
`
`
`Page 13 of 45
`
`SONOS EXHIBIT 1022
`IPR OF U.S. Pat. No. 8,942,252
`
`

`

`
`
`
`
`See, e.g., Ex. 2020 at ln. 280-294.
`
`38. As shown, the clocksync bead would have retrieved the “master
`epoch” by calling an EpochGet function and passing in a IMasterClock data
`structure at the “master” device, which points to the same SAMPLECLOCK data
`structure as the IAudioClock interface structure discussed above. See, e.g., Ex.
`2020 at ln. 280-294; Ex. 2043 at ln. 447-451; Ex. 2086 at ln. 475-545. The
`
`retrieved epoch would then have been converted to network byte order and saved
`in the message. See, e.g., Ex. 2020 at ln. 290.
`
`39. The EpochGet function is defined in the sampleclock.c file.
`When this EpochGet function is called by the the clocksync bead, the
`function first sets an epoch variable (which is of the type SOS_CLOCK_TICK)
`using the following operation:
`
`epoch = sampleclock->Time - delta,
`
`14
`
`
`Page 14 of 45
`
`SONOS EXHIBIT 1022
`IPR OF U.S. Pat. No. 8,942,252
`
`

`

`
`
`where sampleclock->Time is the Time variable of the SAMPLECLOCK data
`structure at the “master” device – which as discussed above contains a snapshot of
`
`the “master” device’s system time – and delta is an adjustment factor that is
`applied to that system time. See Ex. 2086 at ln. 475-545.
`
`40.
`
`In turn, the EpochGet function copies the value of the epoch
`variable into an Epoch variable that points to a variable in the clocksync bead
`(which is also of the type SOS_CLOCK_TICK). See Ex. 2086 at ln. 475-545. It is
`this Epoch variable that would then be encoded as the “master epoch” and sent by
`the “master” device to each “slave” device in the “distributed system” specified by
`
`the Implicit Source Code. See Ex. 2020 at ln. 280-294.
`
`41. The foregoing confirms that the “master epoch” to be encoded by the
`
`clocksync bead at a “master” device is an adjusted system time of the “master”
`device – which does not provide a “time measure of the amount of content that has
`
`already been rendered by [the] rendering device” for the same reasons discussed
`
`above.
`
`42. Thus, contrary to Dr. Hashmi’s contention, the clocksync bead did
`not encode a “master rendering time” as the parties are construing that term for
`
`purposes of these IPR proceedings.
`
`43. For similar reasons, I also disagree with Dr. Hashmi’s contention that
`
`a “slave” device uses the clocksync bead to “decode[] the master rendering
`
`15
`
`
`Page 15 of 45
`
`SONOS EXHIBIT 1022
`IPR OF U.S. Pat. No. 8,942,252
`
`

`

`
`
`times.” See Ex. 2081 at 14-16. Specifically, the time value that would have been
`
`decoded by the clocksync bead at a “slave” device is a “master epoch” that was
`encoded by the clocksync bead at a “master” device – which is an adjusted
`system time of the “master” device that does not provide a “time measure of the
`
`amount of content that has already been rendered by [the] rendering device.”
`
`44. Turning to “slave rendering time,” in his Claim Chart for the ‘791
`
`Patent, Dr. Hashmi contends that “each slave device runs a clocksync bead that
`maintains a rendering clock RenderClock that tracks the rendering time for the
`slave device,” See, e.g., Ex. 2081 at 5 (emphasis added). I disagree with this
`
`contention for several reasons.
`
`45. First, Dr. Hashmi’s statement that RenderClock is maintained by
`the clocksync bead at a “slave” device is not quite accurate. Technically, the
`clocksync bead uses IRenderClock. However, I note that IRenderClock
`is referred to as RenderClock in the audiosync bead and certain rule files.
`Thus, in order to maintain consistency with Dr. Hashmi’s terminology, I have used
`
`RenderClock when describing this interface structure even as used in the
`clocksync bead.
`46. Second, as with IAudioClock described above, RenderClock is
`merely an interface structure that allows for modification of an instance of
`
`SAMPLECLOCK, which is itself a data structure that is periodically updated via the
`
`16
`
`
`Page 16 of 45
`
`SONOS EXHIBIT 1022
`IPR OF U.S. Pat. No. 8,942,252
`
`

`

`
`
`RenderClock interface such that it contains a snapshot of the time value
`indicated by a “slave” device’s system clock. See, e.g., Ex. 2086 at ln. 64-72.
`
`Hence, neither RenderClock nor SAMPLECLOCK is a separate “clock” that
`“tracks” time values. Various aspects of the Implicit Source Code confirm this.
`
`For instance:
`
`● The syncaudio.rule file specifies that RenderClock at a “slave”
`device is created from the sampleclock class. See Ex. 2066 at ln. 14.
`● RenderClock is an interface structure of type SOS_ISAMPLECLOCK.
`See Ex. 2017 at ln. 87 (specifying that RenderClock is an interface
`structure of type SOS_ISAMPLECLOCK); Ex. 2020 at ln. 85 (specifying
`is
`an
`interface
`structure
`of
`type
`that IRenderClock
`SOS_ISAMPLECLOCK).
`● The sampleclock.c file implements a series of functions like
`SampleClock_FrequencySet and SampleClock_Update for
`the SAMPLECLOCK data structure. These functions get invoked via the
`SOS_ISAMPLECLOCK interface structure. See Ex. 2086 at ln. 551-611.
`● The speaker bead uses an ISampleClock interface structure of type
`SOS_ISAMPLECLOCK, and this ISampleClock interface structure is
`set via lookup of the SOS_RENDERCLOCK_NAME path attribute. See,
`e.g., Ex 2017 at ln. 358-364; Ex. 2051 at ln. 253-268. As a result of this
`function, the ISampleClock interface structure in the speaker bead
`will point to the same SAMPLECLOCK data structure structure that the
`RenderClock interface structure points to.
`● The speaker bead specifies that when a “slave” device first creates an
`interface
`to
`its
`audio
`output
`device,
`the
`SampleClock_FrequencySet function is called, which copies the
`“slave” device’s then-current system time value into the Time variable
`of the SAMPLECLOCK data structure using the following operation:
`sampleclock->Time = SOS_Clock_TickGet();
`
`17
`
`
`Page 17 of 45
`
`SONOS EXHIBIT 1022
`IPR OF U.S. Pat. No. 8,942,252
`
`

`

`
`
`See Ex. 2051 at ln. 406-438, Ex. 2086 at ln. 337-399.
`● The speaker bead further specifies that while a “slave” device renders
`audio, the Time variable of the SAMPLECLOCK data structure is
`periodically updated with the “slave” device’s then-current system time
`using this same SOS_Clock_TickGet() function, as demonstrated
`by the following:
`
` SOS_CLOCK_TICK
`SOS_Clock_TickGet();
`=
`now
` ...
` context->ISampleClock->Update(
` context->ISampleClock,
` now,
` sample
` );
`See, e.g., Ex. 2051 at ln. 484-506.
`47. Second, I disagree with Dr. Hashmi’s contention that the
`
`RenderClock interface structure at a “slave” device tracks a “slave rendering
`time” as the parties are construing that term for purposes of these IPR proceedings.
`
`As explained above, RenderClock provides an interface to a SAMPLECLOCK
`data structure at a “slave” device, and the Time variable of that SAMPLECLOCK
`data structure does not contain “rendering time.”
`
`48. Rather, the Time variable of this SAMPLECLOCK data structure at a
`“slave” device is set with the return of SOS_Clock_TickGet() function. That
`function returns the current system time of the “slave” device – which does not
`
`provide “a time measure of the amount of content that has already been rendered
`
`18
`
`
`Page 18 of 45
`
`SONOS EXHIBIT 1022
`IPR OF U.S. Pat. No. 8,942,252
`
`

`

`
`
`by [the] rendering device” for all of the same reasons discussed above. See Ex.
`
`2051 at ln. 406-438, 484-506; Ex. 2086 at ln. 337-399.
`
`49. Thus, contrary to Dr. Hashmi’s contention, the Renderclock
`interface structure defined in the Implicit Source Code did not track or otherwise
`
`provide an interface to a “slave rendering time” as the parties are construing that
`
`term for purposes of these IPR proceedings.
`
`50. Lastly, in his Claim Chart for the ‘791 Patent, Dr. Hashmi contends
`
`that a “slave” device of the “distributed system” specified in the Implicit Source
`
`Code “runs an audiosync bead that calculates, adjusts, and smoothens a
`rendering time differential between the master rendering device and the slave
`
`rendering devices.” Ex. 2081 at 17-18 (emphasis added); see also id. at 5, 15.
`
`Again, I disagree – the time values that the audiosync bead operates on are not
`“rendering times” as the parties are construing that term for purposes of these IPR
`
`proceedings, because those time values do not provide “a time measure of the
`
`amount of content that has already been rendered by a given rendering device.”
`
`51. The audiosync bead defines an AudioSync_Adjust function
`that updates an “early” variable using the following operation:
`
`SOS_INT32 early = (SOS_INT32)(MasterEpoch-RenderEpoch),
`where MasterEpoch and RenderEpoch are both variables of the type
`SOS_CLOCK_TICK. See, e.g., Ex. 2017 at ln. 464-473.
`
`19
`
`
`Page 19 of 45
`
`SONOS EXHIBIT 1022
`IPR OF U.S. Pat. No. 8,942,252
`
`

`

`
`
`52. Further, the audiosync bead specifies that the MasterEpoch and
`RenderEpoch variables used in this operation are set by the following portion of
`the audiosync bead (which appears in the AudioSync_MessageHandler
`function):
`
`
`
`Ex. 2017 at ln. 717-730.
`
`53. As shown, this portion of the audiosync bead sets the
`renderEpoch variable by calling the EpochGet function via the
`RenderClock interface structure at the “slave” device. In turn, the EpochGet
`function updates the renderEpoch variable with the result of the following
`operation:
`
`epoch = sampleclock->Time - delta,
`where sampleclock->Time is the Time variable of the SAMPLECLOCK data
`structure – which as discussed above contains a snapshot of the “slave” device’s
`
`20
`
`
`Page 20 of 45
`
`SONOS EXHIBIT 1022
`IPR OF U.S. Pat. No. 8,942,252
`
`

`

`
`
`system time – and delta is an adjustment factor that is applied to that system
`time. See Ex. 2086 at ln. 475-545.
`
`54. Similarly, this portion of the audiosync bead sets the
`masterEpoch variable by calling the EpochGet function via the
`MasterClock interface structure at the “slave” device, which is tied to the
`SAMPLECLOCK data structure that is found via the SOS_MASTERCLOCK_NAME.
`See, e.g., Ex. 2017 ln. 366-372. The Time variable of the SAMPLECLOCK data
`structure will have been updated by the clocksync bead with an offset-adjusted
`version of the “master epoch” received from the “master” device. See Ex. 2020 ln.
`
`458-480. In turn, the EpochGet function sets the masterEpoch variable using
`the following operation:
`
`epoch = sampleclock->Time - delta,
`where sampleclock->Time is the Time variable of the passed-in
`SAMPLECLOCK data structure – which contains an offset-adjusted version of the
`last “master epoch” received from the “master” device – and delta is an
`adjustment factor that is applied to that “master epoch.” See Ex. 2086 at ln. 475-
`
`545.
`
`55. The foregoing demonstrates that the renderEpoch variable used by
`the audiosync bead is an adjusted system time of the “slave” device and the
`masterEpoch variable used by the audiosync bead is an adjusted system time
`
`21
`
`
`Page 21 of 45
`
`SONOS EXHIBIT 1022
`IPR OF U.S. Pat. No. 8,942,252
`
`

`

`
`
`of the “master” device – neither of which provides “a time measure of the amount
`
`of content that has already been rendered by [the] rendering device” for the same
`
`reasons discussed above.
`
`56. Thus, contrary to Dr. Hashmi’s contention, the audiosync bead
`does not use “rendering times” as the parties are construing that term for purposes
`
`of these IPR proceedings.
`
`57. For at least the foregoing reasons, I therefore disagree with Dr.
`
`Hashmi’s opinion that the Implicit Source Code practices the “rendering time”
`
`limitations of the Challenged Claims of the ‘791 Patent.
`
`B.
`
`
`58.
`
`The Implicit Source Code Fails to Practice a Method for
`Synchronizing Rendering of Content at Designated “Master” and
`“Slave” Rendering Devices as Required by the ‘791 Patent
`
`I understand that the Challenged Claims of the ‘791 Patent require a
`
`method of synchronizing rendering of content at designated “master” and “slave”
`
`rendering devices in a network.
`
`59.
`
`In his Expert Declaration, Dr. Hashmi expresses his opinion that the
`
`Implicit Source Code implements certain “distributed system” configurations that
`
`synchronized the rendering of content at designated “master” and “slave”
`
`rendering devices in a network. See, e.g., Ex. 2080 at ¶¶ 31-36; see also Ex. 2081
`
`at 2, 4, 6-7, 10-11, 14-15, 18. I disagree.

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