throbber
BeCommÔ Corporation
`
`Using BeComm’s RADkit to develop Distributed
`Network Applications
` A Case Study – The Distributed Media Player
`
`BeCommÔ Corporation
`4160 – 148th Avenue, N.E.
`Redmond, WA 98052
` USA
`
`http://www.becomm.com
`
`Page 1 of 9
`
`Implicit Exhibit 2029
`Sonos v. Implicit, IPR2018-0766, -0767
`
`

`

`
`
`
`Contents
`
`
`
`Objective (per Motorola specification) ............................................................................... 3
`Overview ............................................................................................................................. 4
`Tools: .............................................................................................................................. 4
`Setup ............................................................................................................................... 4
`Building the DMP Applications.......................................................................................... 5
`The Distributed Namespace ............................................................................................ 5
`Populating the Namespace .......................................................................................... 6
`Querying the Namespace ............................................................................................ 6
`DataFlows ....................................................................................................................... 6
`Creating a DataFlow ................................................................................................... 6
`Synchronizing a DataFlow .......................................................................................... 7
`Managing a DataFlow ................................................................................................. 7
`Beyond the DMP Application ............................................................................................. 7
`Under the covers: how Strings works ................................................................................. 8
`Summary ............................................................................................................................. 9
`
`
`
`Page 2 of 9
`
`Implicit Exhibit 2029
`Sonos v. Implicit, IPR2018-0766, -0767
`
`

`

`
`Objective (per Motorola specification)
`To build a Distributed Audio Player application that meets the following requirements.
`• The audio player must play out audio files of multiple formats including MP3,
`Microsoft Media, and Real Media.
`• The audio player must play out audio from either downloaded files or "live"
`streams from the Internet.
`• The audio player must support play lists.
`• The audio player must be distributed between a central location and a lightweight
`end-point where the connection to a stereo occurs.
`• The user must be able to control the player to:
`o Select a play list
`o Select content form the Internet
`o Start and stop play-out, skip a selection
`
`Features that are not included in this example of the DMP app but could be easily added
`are:
`• Edit playlist (i.e.: add, remove, reorder songs in list)
`• Auto-generate playlists (i.e.: make me a playlist of 15 random songs that are Rock
`and less than 5 minutes long)
`• Edit attributes of a song (i.e.: set the Title, Author, Genre, etc)
`• Other stream controls (i.e.: Pause, FF, REW)
`Controls to add/remove endpoints to a playout session.
`
`
`
`Page 3 of 9
`
`Implicit Exhibit 2029
`Sonos v. Implicit, IPR2018-0766, -0767
`
`

`

`
`Overview
`
`Tools:
`• RADkit Level I consisting of:
`o RADapi for MFC and RADapi for Java
`o Strings runtime
`• Windows development environment (such as MSDEV)
`• Java development environment
`
`Setup
`For clarity this case study’s example will use three ‘media playing’ devices: (see Fig.1)
`• PC-A and PC-B
`o Running Windows 2000
`o Strings Runtime with MP3, RealAudio, and Windows packages installed
`o Distributed Media Player (DMP) Application have been installed
`o Access to the Internet.
`o LAN network connectivity
`• Home Stereo Companion
`o Running Linux
`o A lightweight endpoint with PCM play out capabilities only and no
`storage device
`o Strings Runtime with PCM play-out package installed
`o Java DMP client app installed
`o LAN network connectivity
`
`
`
`
`Home Stereo
`Companion
`• Strings Runtime with
`PCM play-out support
`
`PCs
`• Strings Runtime with
`Windows Media, Real
`Media, and MP3
`support
`• DMP App
`• Internet access
`
`Fig. 1 Example layout for Distributed Media Player Application example (described above)
`
`
`Page 4 of 9
`
`Implicit Exhibit 2029
`Sonos v. Implicit, IPR2018-0766, -0767
`
`

`

`
`
`Building the DMP Applications
`The application design that will run on both PCs is a standard form-based MFC
`application. The dialog box has two list boxes, one for ‘Songs’ and one for end point
`‘Destinations’; in this case the endpoints are speakers on the local network. Fig. 2 is a
`representation of the user interface that an application developer might build for this
`application.
`
`
`
` File View Play Favorites Go Upgrade Help
`
`Artist
`
`
`
`Media Type
`
` MP3
`
`Genre
`
` Rock n Roll
`
`Search
`
`
`Songs
`
`1. AC/DC – Razor’s Edge
`2. Guns-n-Roses – Welcome to the
`Jungle
`3. Def Leppard - Pyromania
`
`Destinations
`
`1. PC – A Speaker
`2. PC – B Speaker
`3. Home Stereo
`Companion
`
`Fig. 2 Example Distributed Media Player GUI
`
`
`In this example, the MFC application designed to run on the PCs presents a rich GUI to
`the user since PCs have abundantly large display devices such as a monitor. This example
`assumes that the Home Stereo Companion has a small and limited, LED display and
`hardware control buttons for “Play”, “Pause”, “Skip” and “Stop” operations. The
`RADapi supports application development in Java, which allows for applications to be
`built for a variety of platforms including Linux. The Home Stereo Companion’s Java app
`will be refereed to as the DMP Client app.
`
`The Distributed Namespace
`The Distributed Namespace is a browsable data structure that can be populated with
`objects. An object is defined by the class that implements it and the state that instantiates
`it.
`
`
`Page 5 of 9
`
`Implicit Exhibit 2029
`Sonos v. Implicit, IPR2018-0766, -0767
`
`

`

`The Application can browse the namespace and interact with objects through a variety of
`classes provided by the RADkit. For more information on available classes please see the
`enclosed help file.
`
`Populating the Namespace
`The configuration on each media playing device, in this example PC-A and PC-B,
`specifies a directory in its file system as a storage location for audio files of varying
`formats. These locations are then be scanned at startup by Strings, which populates the
`namespace with the objects found in the file system’s directory. Additionally, the
`configuration allows for registration of the device’s speaker objects in the namespace so
`that other Strings enabled devices may utilize them. The configurations on PC-A, PC-B
`and the Home Stereo Companion register their respective speaker devices in the
`namespace. The result is that each Strings device can utilize objects that are registered in
`the Distributed Namespace regardless of their physical location or the class of the object.
`
`Querying the Namespace
`When the DMP application wishes to obtain the list of media sources and sinks in the
`namespace, it constructs two network queries using the NetworkBrowser class. First it
`submits a query for MP3s, optionally constrained by a user-supplied input of "genre" and
`"artist". For example, if the user typed "Def Leppard" into the "artist" field, the
`application would construct a query to the RADapi for “ext='mp3' AND artist='Def
`Leppard’". The response is a list of MP3 network objects, which the DMP application
`uses to populate the "Songs" list box. Notice that the application (and user) does not
`need to know where the music file objects are physically located - since they are
`populated within the namespace they could be on either PC-A, PC-B or any other
`provider of music file objects.
`
`Next, the application submits a query to the RADapi for all network speakers. It uses
`“Class=='Speaker'” which asks for all network objects that support the "Speaker"
`interface. The DMP application uses these values returned to it by the RADapi to
`populate the “Destinations” list box. Again, the DMP application doesn’t require
`knowledge of where the speakers are on the network, just that they support the speaker
`interface.
`
`DataFlows
`A DataFlow is also an object that can be created and manipulated using the RADapi. A
`DataFlow requires that at least one object is a data ‘source’ and that zero or more objects
`that make up the flow are a data ‘sink’. A DataFlow is assigned a unique identifier by the
`RADapi, and can be managed by the DMP application through the DataFlow class. See
`the included RADapi documentation for more details on the DataFlow class. Objects can
`also be controlled for non- DataFlow specific functions such as volume control on a
`speaker object.
`
`Creating a DataFlow
`The user of the DMP application selects a music file and one or more endpoints. When
`the user presses the "Play" button, the DMP application creates a "session" on the
`selected music file object and a session on each of the selected speaker objects. It then
`creates a DataFlow from the music file session to the speaker sessions. At this point, the
`audio will begin playing on the selected speaker objects. The developer writing the DMP
`application doesn’t require any explicit knowledge of the data transformation that needs
`
`Page 6 of 9
`
`Implicit Exhibit 2029
`Sonos v. Implicit, IPR2018-0766, -0767
`
`

`

`to take place in order to deliver the content from its source to the sink. Strings
`determines the transformations (or route) that the data needs to make before it can reach
`the endpoint in the correct format. For example, if a Windows Media file is selected on
`PC-A and is to be sent to the Home Stereo Companion, Strings determines that it must
`pass through the Windows Media decoder Feature on PC-A before the PCM can be
`shipped across the network to the Home Stereo Companion. Additionally, The DMP
`application doesn’t need to be aware of whether the audio is from a file or ‘live’ content
`from the Internet. Strings manages the buffering, transformation, and routing of the live
`stream at the source, before sending the PCM data stream across the network to the Home
`Stereo Companion. This is a good example of the flexibility of Strings as the Home
`Stereo Companion can access both Real and Windows Media through one of the Strings
`enabled PCs even though it cannot process those formats by itself.
`
`Synchronizing a DataFlow
`The RADapi also makes it possible to synchronize multiple DataFlow objects with each
`other regardless of content type. This makes it possible to synchronize audio playout on
`multiple endpoints or to synchronize audio with other content such as video or text. In
`this example, the DMP application can use the RADapi to synchronize audio to more than
`one target speaker creating a rich, user audio experience regardless of the actual physical
`nature (i.e. one flow might be compressed whereas another might not) of the content or
`the networks the speakers exist on (i.e. one device might be over a wireless network and
`the other over a HomePNA). Multiple DataFlows can be synchronized with each other in
`a DataFlowGroup or a single DataFlow with multiple end points can specify
`synchronized playout. The DataFlow class allows the DMP application to specify which
`speaker object is the synchronization master, and which is the slave. DataFlow
`synchronization is available for any media type. For example a video file could have the
`video synchronized on one device where the audio is being played out from another
`device on the network.
`
`Managing a DataFlow
`When the user invokes a DataFlow control such as “Start” “Stop”, or “Pause” the DMP
`application passes in the DataFlow identifier and the command name, and Strings
`determines the appropriate network objects that need to be associated with the control
`commands and then propagates them to the appropriate network objects. Since the
`DataFlow is global and unique to the network, the DMP applications on either PC-A, PC-
`B or the Home Stereo Companion can learn about and control a DataFlow. The actual
`application code to manage control of the DataFlow remains very simple because Strings
`does all the work of distributing the control inputs to the appropriate devices.
`
`Beyond the DMP Application
`The DMP application is a basic example of how a distributed network application could
`be built using the RADkit. In addition to audio, application developers using the RADkit
`have extensive flexibility in developing applications which support rich media, disparate
`network technologies and varied devices. Strings provides the flexibility to transform,
`route, and deliver any content to any device in virtually any format.
`
`As next generation wireless mobile devices such as blue tooth enabled phones,
`handhelds, digital Set-Top-Boxes and web tablets become widely available, the RADkit
`can be utilized to rapidly build applications to run on these devices and platforms to take
`full advantage of Strings. Furthermore, applications built using the RADkit, are scalable
`
`Page 7 of 9
`
`Implicit Exhibit 2029
`Sonos v. Implicit, IPR2018-0766, -0767
`
`

`

`as the consumer adds other Strings enabled processing devices, or content types such as
`videos, pictures, TV content, etc, to their local network.
`
`For example, the RADkit could be used to build an application for a Set-Top-Box and a
`companion web tablet so that the user could experience ‘TV out of TV’. This would
`enable images from the Set-Top-Box to be displayed on both the TV and the companion
`tablet while audio is played in sync to the TV’s stereo speakers. Adding features such as
`channel preview, instant replay and other television related content would be relatively
`simple since the application developer would require minimal knowledge of transport,
`translation and delivery issues related to television content over a network.
`
`Since Strings provides full support for peer-to-peer networking and multimedia
`interaction, developers could easily add support for other application features such photo,
`movie, music and PVR peer sharing; home control; telephony; video conferencing;
`instant messaging and more.
`
`Under the covers: how Strings works
`The Strings application logic is separated into discrete software services called Beads,
`which encapsulate everything from platform services to hardware resources and the
`protocols used to communicate data between these resources. Beads completely hide both
`the interface and the implementation of logic they encapsulate. Strings dynamically
`assembles the optimal set of Beads to facilitate the transformation and transportation of
`data throughout the system. The set of Beads is determined on the fly based on the needs
`of the network, the system, the media types being handled and user preferences. This
`allows Strings to efficiently and optimally manage communication related data as it flows
`through the system. Since Beads separate interfaces and implementation, Strings devices
`can reuse Beads in multiple contexts without requiring additional application code. This
`provides an unprecedented degree of software reuse. In addition, Beads can exist across
`machine boundaries as network services allowing Strings to leverage network services on
`the fly to extend application functionality. Such is the case of the Home Stereo
`Companion’s ability to leverage the PCs to access Windows Media or Real Audio
`Content from the Internet without having the ability to handle this type of content alone.
`
`Incorporated into Strings is a powerful Rules Engine. The Rules Engine makes it
`possible to specify configuration information that is used at runtime by Strings in
`managing dataflow through the system. The Rules Engine allows administrators to
`specify arbitrarily rich conditions that are evaluated in the process of assembling a
`sequence of Beads. Examples might include building rules to force the routing of audio
`or video content to specific locations in the network or ensuring that content of a specific
`type is always encrypted before leaving a device. The Rules Engine makes it possible to
`dynamically change system behavior without having to modify complex application
`code. Since rules can be global in nature, administrators can effectively control system
`behavior across multiple applications.
`
`Strings is platform independent and requires a thin Operating System Portability Layer to
`run on any given Operating System. Strings can be quickly and easily ported to run on
`most modern operating systems. Strings is currently supported on Windows 98, NT4, XP,
`CE, Linux, FreeBSD, VxWorks, and will soon support Symbian OS. Additionally, the
`RADkit is available for development in C++, Java, and ActiveX allowing developers to
`rapidly build applications for a wide variety of platforms.
`
`Page 8 of 9
`
`Implicit Exhibit 2029
`Sonos v. Implicit, IPR2018-0766, -0767
`
`

`

`
`The RADkit makes it possible for developers to build applications that leverage the
`advance multimedia, networking and distributed capabilities within Strings without
`having to be consumed with inherent complexities of such systems. This enables
`applications to be built in far less time than would otherwise be possible while still
`enabling the development feature-rich solutions.
`
`Summary
`Whether the project is a distributed media player or a more complete media gateway
`solution, the RADkit allows application developers to rapidly build distributed network
`applications by taking advantage of Strings, to dynamically share, transform, route, and
`deliver rich content such as
`• Audio
`• Video
`• TV (cable) and embedded information such as show information and Closed
`Captioning
`• Web content
`• Email
`• Chat
`to connected devices of varying capabilities such as:
`• PCs
`• Set top boxes
`• Residential Gateways
`• Web Tablets
`• PDAs
`• Mobile phones
`• Home Stereo Companions
`All while minimizing expensive development efforts to create one off custom solutions
`for each unique device.
`
`The RADapi, which ships with the RADkit Level 1 edition, has been included as a
`reference to this document.
`
`Page 9 of 9
`
`Implicit Exhibit 2029
`Sonos v. Implicit, IPR2018-0766, -0767
`
`

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


Or .

Accessing this document will incur an additional charge of $.

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

Accept $ Charge
throbber

Still Working On It

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

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

throbber

A few More Minutes ... Still Working

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

Thank you for your continued patience.

This document could not be displayed.

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

Your account does not support viewing this document.

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

Your account does not support viewing this document.

Set your membership status to view this document.

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

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

Become a Member

One Moment Please

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

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

Your document is on its way!

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

Sealed Document

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

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


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket