throbber
/*
`
`++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
`+++++++++++++
`Copyright (c) 2001 BeComm Corporation
`Filename:
` sosisampleclock.h
`Group Name:
` Sample Clock Interface
`Group Overview:
` A "Sample Clock" provides a mechanism for synchronizing
` two streams of multimedia.
` Each stream is characterized
` by a frequency and divisor to get the
` result in samples per millisecond.
` For instance a 44100Hz
` audio stream has a frequency of 44100Hz and a divisor
` of 1000 (44100 / 1000 = 4.41 samples per millisecond).
` A 25 frame-per-second video stream has a frequency of
` 25/1000 frames per millisecond.
` A sample clock contains the frequency and divisor for
` the stream, plus an instantaneous position mark,
` consisting of a wall-clock time (in milliseconds) and
` a sample position (in samples).
` Given this set of values we can project back to get the time
`at
` which sample 0 would have been played - the "epoch" for this
`stream.
` By comparing two epochs, we can determine the time shift
` required to bring them into synchronization.
` The epoch for a given stream may drift with time for several
` reasons; audio hardware playout rates do not always exactly
` match the system clock; in some cases the drift varies
`depending on
` the level of interrupt activity on the system. If a stream
`is
` paused due to system contention or user intervention the
`epoch
` will change.
`
` Typically one clock is identified as the master clock, and
` all other clocks attempt to match the master. For instance
`
`1
`
`
`Page 1 of 6
`
`SONOS EXHIBIT 1025
`IPR OF U.S. Pat. No. 8,942,252
`
`

`

` when playing audio and video, the audio clock is typically
`the
` master clock (because audio playout rate is usually regulated
` by an external DSP clock, and users are more perceptive to
`changes
` in audio delivery rate).
` Periodically the playout position for the audio stream
` is copied into the master sample clock. The video stream
`then
` uses the difference between it's own sample clock and the
`audio-derived
` master clock to determine the frame delivery time for each
`frame.
` Overflow errors must be considered when dealing with samples.
` A 32-bit millisecond counter will wrap after 2^32
`milliseconds
` which is approximately 50 days. A 32-bit sample counter at
`44100Hz
` will wrap around in 2^32/44100 seconds which is approximately
` 27 hours. If any addition or multiplication is performed on
`sample
` values, overflow errors may occur much earlier.
`Owner:
` Guy Carpenter (guyc) 21-Aug-2001
`-----------------------------------------------------------------
`------------*/
`/* cvsid: $Id: sosisampleclock.h,v 1.5 2001/09/13 20:50:24 guyc
`Exp $ */
`#ifndef _SOSISAMPLECLOCK_H_
`#define _SOSISAMPLECLOCK_H_
`#include <sosstrings.h>
`/*++
`Macro Description:
` Defines the global identifier for the SampleClock interface.
`--*/
`#define SOS_ISAMPLECLOCK_ID "sampleclock"
`typedef struct _SOS_ISAMPLECLOCK SOS_ISAMPLECLOCK;
`/*++
`Prototype Name:
`
`2
`
`
`Page 2 of 6
`
`SONOS EXHIBIT 1025
`IPR OF U.S. Pat. No. 8,942,252
`
`

`

` SOS_ISAMPLECLOCK_FREQUENCYSET
`Prototype Description:
` Set the sample frequency of the sample clock. The
` frequency is expressed as a ratio of two 32-bit unsigned
` integers.
`Parameters:
` SOS_ISAMPLECLOCK * Interface - [in]
` Interface to object.
` SOS_UINT32 Frequency - [in]
` Frequency numerator.
` SOS_UINT32 Divisor - [in]
` Frequency divisor. May NOT be zero.
`Return Value:
` SOS_STATUS -
` SOS_Success for successful completion.
`
` SOS_ErrorParameter if interface is invalid or the divisor
`is zero.
`--*/
`typedef
`SOS_STATUS
`(*SOS_ISAMPLECLOCK_FREQUENCYSET)(
` SOS_ISAMPLECLOCK * Interface,
` SOS_UINT32 Frequency,
` SOS_UINT32 Divisor
`);
`/*++
`Prototype Name:
` SOS_ISAMPLECLOCK_FREQUENCYGET
`Prototype Description:
` Returns the current frequency ratio. If no call
` has been made to FrequencySet for this object, the
` values will be zero.
` Note that the sampleclock implementation may return
` different values for Frequency and Divisor than those
` originally set - the ratio should remain the same.
`Parameters:
`
`3
`
`
`Page 3 of 6
`
`SONOS EXHIBIT 1025
`IPR OF U.S. Pat. No. 8,942,252
`
`

`

` SOS_ISAMPLECLOCK * Interface - [in]
` Interface to object to be queried.
` SOS_UINT32 * Frequency - [out]
` If not null, current frequency numerator will be
` stored at Frequency.
` SOS_UINT32 * Divisor - [out]
` If not null, current frequency divisor will be
` stored at Divisor.
`Return Value:
` SOS_STATUS -
` SOS_Success for successful completion.
` SOS_ErrorParameter if the interface is invalid.
`--*/
`typedef
`SOS_STATUS
`(*SOS_ISAMPLECLOCK_FREQUENCYGET)(
` SOS_ISAMPLECLOCK * Interface,
` SOS_UINT32 * Frequency,
` SOS_UINT32 * Divisor
`);
`/*++
`Prototype Name:
` SOS_ISAMPLECLOCK_UPDATE
`Prototype Description:
` Updates the sample position for this clock. The stream
` position is expressed in the units defined by the call
` to FrequencySet - typically samples for audio, or frames
` for video.
`Parameters:
` SOS_ISAMPLECLOCK * Interface - [in]
` Interface to object being updated.
` SOS_CLOCK_TICK Time - [in]
` Clock time at which this sample was/will be delivered.
` SOS_UINT32 Sample - [in]
` Stream position.
`Return Value:
`
`4
`
`
`Page 4 of 6
`
`SONOS EXHIBIT 1025
`IPR OF U.S. Pat. No. 8,942,252
`
`

`

` SOS_STATUS -
` SOS_Success for successful completion.
` SOS_ErrorParameter if interfaces is not valid.
`--*/
`typedef
`SOS_STATUS
`(*SOS_ISAMPLECLOCK_UPDATE)(
` SOS_ISAMPLECLOCK * Interface,
` SOS_CLOCK_TICK Time,
` SOS_UINT32 Sample
`);
`/*++
`Prototype Name:
` SOS_ISAMPLECLOCK_EPOCHGET
`Prototype Description:
` Gets the nominal epoch (or stream-start time) for this
` clock. The epoch is the time at which frame zero would
` have been delivered, computed from the last update
` time and frequency settings. This value does not reflect
` the time frame/sample 0 was actually delivered, but rather
` the projected time based on the current frame position.
`Parameters:
` SOS_ISAMPLECLOCK * Interface - [in]
` Interface to clock object.
` SOS_CLOCK_TICK * Epoch - [out]
` Location to store the computed epoch.
`Return Value:
` SOS_STATUS -
` SOS_Success for successful completion.
` SOS_ErrorParameter if the interface is invalid,
` or if Epoch is NULL, or if the frequency has not
` been set.
`--*/
`typedef
`SOS_STATUS
`(*SOS_ISAMPLECLOCK_EPOCHGET)(
` SOS_ISAMPLECLOCK * Interface,
` SOS_CLOCK_TICK * Epoch
`
`5
`
`
`Page 5 of 6
`
`SONOS EXHIBIT 1025
`IPR OF U.S. Pat. No. 8,942,252
`
`

`

`);
`
`/*++
` Struct Description:
` Implementors of the sampleclock interface should use the
`following
` structure to register the sampleclock interface for their
`class.
`--*/
`struct _SOS_ISAMPLECLOCK {
` SOS_INTERFACE_DECL;
` SOS_ISAMPLECLOCK_FREQUENCYSET FrequencySet;
` SOS_ISAMPLECLOCK_FREQUENCYGET FrequencyGet;
` SOS_ISAMPLECLOCK_UPDATE Update;
` SOS_ISAMPLECLOCK_EPOCHGET EpochGet;
`};
`
`#endif /* _SOSISAMPLECLOCK_H_ */
`
`6
`
`
`Page 6 of 6
`
`SONOS EXHIBIT 1025
`IPR OF U.S. Pat. No. 8,942,252
`
`

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