throbber
United States Patent [19J
`Crites et al.
`
`I 1111111111111111 11111 1111111111 1111111111 11111 1111111111 111111111111111111
`US006097380A
`[11] Patent Number:
`[45] Date of Patent:
`
`6,097,380
`Aug. 1, 2000
`
`[54] CONTINUOUS MEDIA STREAM CONTROL
`
`[75]
`
`Inventors: Brian D. Crites, Redmond; Edward J.
`Praitis, Woodinville, both of Wash.
`
`[73] Assignee: Microsoft Corporation, Redmond,
`Wash.
`
`[21] Appl. No.: 08/669,983
`
`[22] Filed:
`
`Jun. 24, 1996
`
`Int. Cl.7 ...................................................... G06F 3/100
`[51]
`[52] U.S. Cl. .............................................................. 345/302
`[58] Field of Search ..................................... 345/302, 326,
`345/333, 334, 335
`
`[56]
`
`References Cited
`
`PUBLICATIONS
`
`Primary Examiner-Phu K. Nguyen
`Assistant Examiner-Cliff N. Vo
`Attorney, Agent, or Firm-Lee & Hayes, PLLC
`
`[57]
`
`ABSTRACT
`
`A network system includes one or more network servers and
`a plurality of available media streams. The media streams
`are formatted differently. Some are file-based streams, sup(cid:173)
`plied by the network servers. Others are supplied by local
`tuners from digital and/or analog signal broadcasts. A net(cid:173)
`work client executes an application program that is to
`control rendering of the media streams. Each media stream
`is represented by a programming object. Each programming
`object has identical interface functions that can be invoked
`by the application program to control playback of the
`different media streams even though such media streams are
`of different media types.
`
`Microsoft® Media Player Version 4.0 (Trademark of
`Microsoft Corp.) Screen Display pp. 1-10, 1981-1996.
`
`32 Claims, 6 Drawing Sheets
`
`40
`
`47
`
`48
`
`PROCESSOR
`
`NETWORK
`INTERFACE
`
`TUNER
`
`/20
`
`5,26
`
`INPUT DEVICES
`
`46
`
`42
`
`MEMORY
`
`APPLICATION
`PROGRAM
`
`OPERATING
`SYSTEM
`
`MEDIA STREAM
`CONTROLLER
`
`52
`
`50
`
`53
`
`24
`
`DISPLAY
`
`Ex.1010
`APPLE INC. / Page 1 of 13
`
`

`

`U.S. Patent
`
`Aug. 1, 2000
`
`Sheet 1 of 6
`
`6,097,380
`
`12
`
`18
`
`NETWORK
`SERVER
`
`DATA
`STORAGE
`
`12
`
`NETWORK
`SERVER
`
`18
`
`DATA
`STORAGE
`
`14
`
`/
`
`D .
`
`I
`
`I
`
`~~~~~~~~~ ~
`~e
`
`14
`
`14
`
`D
`
`Ex.1010
`APPLE INC. / Page 2 of 13
`
`

`

`U.S. Patent
`
`Aug. 1, 2000
`
`Sheet 2 of 6
`
`6,097,380
`
`20
`
`/
`
`24
`
`22
`
`~-------_J
`
`I
`
`I
`I
`I
`I
`I
`I
`I
`
`! 34
`!
`
`Ex.1010
`APPLE INC. / Page 3 of 13
`
`

`

`U.S. Patent
`
`Aug. 1, 2000
`
`Sheet 3 of 6
`
`6,097,380
`
`40
`
`47
`
`48
`
`PROCESSOR
`
`NETWORK
`INTERFACE
`
`TUNER
`
`/20
`
`5,26
`
`INPUT DEVICES
`
`46
`
`42
`
`MEMORY
`
`APPLICATION
`PROGRAM
`
`OPERATING
`SYSTEM
`
`MEDIA STREAM
`CONTROLLER
`
`52
`
`50
`
`53
`
`24
`
`DISPLAY
`
`Ex.1010
`APPLE INC. / Page 4 of 13
`
`

`

`U.S. Patent
`
`Aug. 1, 2000
`
`Sheet 4 of 6
`
`6,097,380
`
`OBJECT
`
`INTERFACES
`
`60
`
`GENERAL
`MEDIA
`OBJECT
`
`!OBJECT
`!PLAY
`!VIDEO
`!AUDIO
`!EVENTS
`
`SERVER
`FILE
`SOURCE
`
`70
`
`76
`
`DATA
`
`DATASOURCE
`
`ANALOG
`BROADCAST
`SOURCE
`
`DATA
`
`DATASOURCE
`
`82
`
`88
`
`AV/ FILE
`SOURCE
`
`DATA
`
`DATASOURCE
`
`DIGITAL
`BROADCAST
`SOURCE
`
`DATA
`
`DATASOURCE
`
`Ex.1010
`APPLE INC. / Page 5 of 13
`
`

`

`~
`....
`.....:a
`
`00 =
`
`.... = \0
`
`0--,
`
`O'I
`
`0 ....,
`Ul
`~ ....
`'JJ. =(cid:173)~
`
`t
`
`0
`0
`0
`N
`'"""' ~
`
`~ = ......
`~ ......
`~
`•
`r:JJ.
`d •
`
`gpw7
`
`BROADCAST
`
`OBJECT
`
`DIGITAL
`
`DCAS
`
`0
`
`STREAM OBJECT
`
`LOCAL FILE
`
`STREAM OBJECT
`
`SERVER FILE
`
`62
`
`APPL/CATION PROGRAM
`
`52
`
`Ex.1010
`APPLE INC. / Page 6 of 13
`
`

`

`U.S. Patent
`
`Aug. 1, 2000
`
`Sheet 6 of 6
`
`6,097,380
`
`i
`
`00
`/1
`
`I
`
`REC£/VE SOURCE
`DESIGNATION
`
`,
`INSTANTIATE MEDIA
`MANAGER
`
`I
`
`02
`/1
`
`10
`/1
`
`I
`
`INVOKE
`OBJECT CREATION
`FUNCTION
`
`12
`/1
`
`I
`
`'
`INVOKE
`INTERFACES
`
`t
`
`104
`
`MEDIA
`MANAGER
`OBJECT
`
`106
`MANAGER
`
`Ex.1010
`APPLE INC. / Page 7 of 13
`
`

`

`6,097,380
`
`1
`CONTINUOUS MEDIA STREAM CONTROL
`
`TECHNICAL FIELD
`This invention relates to computer and network systems
`that render continuous media information such as audio and 5
`video information from sources such as network servers and
`analog tuners.
`
`2
`FIG. 3 is a functional block diagram of the computer
`shown in FIG. 2.
`FIG. 4 shows a conventional representation of a program(cid:173)
`ming object and its interfaces.
`FIG. 5 shows a general-media programming object and
`preferred interfaces.
`FIG. 6 shows examples of media-specific programming
`objects.
`FIG. 7 shows the interactions of various components in
`accordance with the invention.
`FIG. 8 shows preferred steps in accordance with the
`invention.
`FIG. 9 shows a media manager object in accordance with
`15 the invention.
`
`DETAILED DESCRIPTION OF THE
`PREFERRED EMBODIMENT
`
`FIG. 1 shows a computer network system in accordance
`with one embodiment of the invention. The system includes
`one or more network servers 12 and a plurality of network
`client computers 14. The client computers preferably com(cid:173)
`municate with the servers through local-area or wide-area
`networks 16, and/or are connected for communication with
`servers 12 by on-demand or dial-up connections such as
`conventional modem connections. For example, a particular
`client computer 14 might be connected to the Internet
`through a modem connection to a local Internet service
`provider. Servers 12 in this case would typically have
`dedicated, high-speed connections to the Internet. As
`another example, a client computer 14 might be connected
`to a server 12-such as an online service provider like
`Compuserve or the Microsoft Network-by a direct, dial-up,
`modem connection.
`The network servers 12 have access to mass storage
`devices 18 on which are stored a plurality of continuous
`media data streams. In this case, the continuous media
`streams consist of sequences of digital data that are intended
`40 to be supplied serially to client computers and rendered by
`the client computers in a form that is useful to users of the
`client computers. For example, a continuous media stream
`might consist of a sequence of audio samples which are to
`be converted to analog format by the client computer and
`45 rendered as audible sound. As another example, a continu(cid:173)
`ous media stream might consist of a sequence of video
`frames that are to be rendered sequentially by the client
`machine. In many cases, the data streams will be com-
`pressed.
`These continuous media data streams are typically stored
`as files on mass storage devices 18, and are referenced by
`conventional file names. A client can specify a particular
`media stream by indicating its file name in combination with
`a unique name or ID that has been assigned to the server
`having access to the mass storage device on which the file
`resides.
`FIG. 2 shows a client computer 20 in the form of a
`conventional desktop IBM-compatible computer. Client
`computer 20 has a central processing unit (CPU) 22, a
`display monitor 24, a keyboard 25, and a mouse 26. The
`computer 20 also has a floppy disk drive 28 for interfacing
`with a compatible floppy memory diskette 30 (e.g., 3.5"
`form factor), and an optical disk drive 32 for interfacing with
`a compatible CD-ROM 34. The computer 20 might also
`65 include another input device in addition to, or in lieu of, the
`keyboard 25 and mouse 26 including such devices as a track
`ball, stylus, or the like.
`
`BACKGROUND OF THE INVENTION
`There was a time when information presented by a 10
`computer was limited to numbers and/or text. With modern
`personal computers, however, a wide variety of information
`can be presented, including graphics, audio, and video.
`The number of information sources has also multiplied.
`Multimedia information is now available from local digital
`storage such as CD-ROMs, from remote providers and
`online services, and even from local analog sources such as
`television and radio receivers.
`While such variety allows application programs to pro-
`vide much richer content, it also creates a degree of com(cid:173)
`plexity for programmers. Such complexity is a result pri(cid:173)
`marily of the different ways in which application programs
`must interact with different computer and network elements
`to render information of various kinds from different
`sources.
`It is possible to relieve application programs of some of
`the details of information rendering by providing APis
`(application programming interfaces) that take care of such
`details. Even with such APis, however, application programs
`must be aware of the types of information they are rendering
`and must be able to determine the correct APis for rendering
`such information. This approach makes it difficult to add
`new media types to a system. In order to take advantage of
`a new media type, each application program has to be
`rewritten so that it is aware of the proper APis to use for
`rendering the media type.
`
`35
`
`20
`
`25
`
`30
`
`SUMMARY OF THE INVENTION
`The invention described below enables application pro(cid:173)
`grams to render continuous media streams of different types
`and from different sources without being aware of the details
`of the media streams such as format or location or how it is
`rendered. Each media stream is represented as an object with
`a plurality of interfaces. The interfaces have functions or
`methods for adjusting the volume of a media stream, for
`setting display parameters for video streams, and for per(cid:173)
`forming other functions with regard to the rendering of
`media streams.
`In the embodiment described below, an application pro- 50
`gram learns of a media stream by receiving a pointer to a
`media-specific object representing the media stream. The
`application program passes this pointer to an object creation
`function that implements a general-media programming
`object, resulting in a general-media object that has a similar 55
`or identical set of interfaces regardless of the type of media
`stream the general-media object represents. Using this
`scheme, the application program is never required to be
`aware of the details of the media stream. Rather, the general(cid:173)
`media programming object performs any lower-level func-
`tions necessary to control the rendering of the media stream.
`
`60
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`FIG. 1 shows a computer network system in accordance
`with one embodiment of the invention.
`FIG. 2 shows a client computer in accordance with the
`invention.
`
`Ex.1010
`APPLE INC. / Page 8 of 13
`
`

`

`6,097,380
`
`5
`
`20
`
`3
`FIG. 3 shows a functional block diagram of the computer
`20, revealing components that are not shown in FIG. 2. The
`computer 20 has a processor 40 and computer-readable
`storage media 42 including volatile memory (e.g., RAM)
`and non-volatile memory. The various components are inter(cid:173)
`connected by an internal bus 46. Non-volatile memory can
`be implemented as integrated circuit chips (e.g., ROM,
`EEPROM), disk drive(s) (e.g., floppy, optical, hard), or a
`combination of both. The volatile memory will typically
`comprise electronic DRAM (dynamic random access
`memory). Display 24 is connected to bus 46 through appro(cid:173)
`priate hardware interface drivers (not shown). Additionally,
`input devices 25 and 26 are connected to supply data to bus
`46 via appropriate 1/0 ports, such as serial RS-232 ports.
`Computer 20 includes a network interface 47 for connec(cid:173)
`tion to a remote network server. As discussed above, the
`connection to the server can be through a local-area or
`wide-area network. Network interface 47 therefore com(cid:173)
`prises a conventional Ethernet network card, a modem, or
`another device that provides communications with a server.
`The computer also includes one or more local analog
`tuners 48. The tuners are connected to receive analog
`broadcast signals from one or more sources. A tuner might
`be a radio tuner for receiving radio broadcasts or paging
`messages. Alternatively, such a tuner might be a television 25
`receiver for receiving television broadcasts that include both
`video and sound. An example of such a tuner is manufac(cid:173)
`tured by Zenith Electronics Corp. of Glenview, Ill., as model
`number #ST5612.
`The analog data received from the tuner is considered a
`continuous media stream for purposes of this description.
`Computer 20 runs an operating system 50 which supports
`multiple applications. Operating system 50 is stored in
`memory 42 and executed on processor 40. The operating
`system is preferably a multitasking operating system which
`allows simultaneous execution of multiple applications,
`although aspects of this invention may be implemented
`using a single-tasking operating system. The operating sys(cid:173)
`tem preferably employs a graphical user interface window- 40
`ing environment which presents the applications or docu(cid:173)
`ments in specially delineated areas of the display screen
`called "windows." Each window has its own adjustable
`boundaries which enable the user to enlarge or shrink the
`application or document relative to the display screen. Each
`window can act independently, optionally including its own
`menu, toolbar, pointers, and other controls, as if it were a
`virtual display device. One preferred operating system is the
`Windows® operating system sold by Microsoft Corporation,
`such as Windows® 95 or Windows NT™ or other derivative
`versions of Windows®. However, other operating systems
`which provide windowing environments may be employed,
`such as the Macintosh Finder from Apple Corporation and
`the OS/2 Presentation Manager from IBM.
`An application program 52 is stored in memory 42. When
`activated, the application program 52 runs under operating
`system 50 while executing on processor 40. The application
`program 52 can be loaded into electronic memory from the
`floppy diskette 30 or CD-ROM 34 or, alternatively, down(cid:173)
`loaded from network 16 via network interface 47.
`In addition, a media stream controller 53 is stored in
`memory 42 and executed by processor 40. Media stream
`controller 53 allows application program 52 to create pro(cid:173)
`gramming objects representing the different media streams.
`Because of this, the application program does not need to be
`aware of the specifics of the media streams. In fact, the
`application program controls the rendering of each media
`
`4
`stream using the same procedures regardless of the format or
`source of the media stream.
`The programming objects created by media stream con(cid:173)
`troller 53 have common interface functions that can be
`invoked by the application program to control playback of
`different media streams even though such media streams are
`of different media types. For example, each programming
`object has a volume control interface having identical meth(cid:173)
`ods or functions that can be invoked by the application
`10 program to determine and set the rendered volume level of
`a particular media stream-whether the media stream is a
`digital audio stream or an analog television broadcast.
`The invention is described within the context of a familiar
`desktop computer that typically includes an Intel-based or
`15 Intel-compatible microprocessor, with four to sixteen mega(cid:173)
`bytes of RAM. Such a computer is capable of running a
`multitasking operating system with a windowing environ(cid:173)
`ment. However, aspects of this invention might also be
`employed in other forms of computing devices, such as
`laptop computers, hand-held computers, portable personal
`information managers (PIMs), and the like. In these devices,
`the application program may be configured to run on a
`single-tasking operating system which does not support a
`windowing environment.
`In addition, the invention will be useful in non-traditional
`network environments other than the wide-area network
`environment shown. For example, the invention will be
`useful in the interactive TV environment, where the server
`will consist of a cable headend and the client will consist of
`30 a set-top box or other device performing a similar function.
`In many proposed interactive TV systems, the headend will
`be capable of supplying media streams in a variety of
`different formats, such as file-based digital formats and
`broadcast digital and analog formats. Some media streams
`35 will be supplied on demand to individual clients, while
`others will be broadcast on a pre-determined schedule. In
`this environment, the client will include both a digital
`network interface and an analog tuner for receiving televi-
`sion or other audio/visual broadcasts.
`The configuration of FIGS. 1-3 includes several media
`sources, which are capable of supplying media streams in a
`variety of different formats. For example, the local non(cid:173)
`volatile storage of computer 20 is a potential source of media
`streams. Audio and/or video streams are available from local
`45 hard disks, floppy disks, and CD-ROMs. Similar streams
`might be available from Internet sources or other network
`sources such as a server 12. Tuners 48 also supply media
`streams. In some cases, the tuner itself will render the media
`streams, without participation by processor 40 of computer
`50 20. In other cases, a tuner will supply a digital data stream
`for rendering by processor 40. In many cases, processor 40
`or application program 52 can control the channel or fre(cid:173)
`quency of the tuner, to select a particular broadcast signal.
`Typical file-based digital media formats include ".wav"
`55 audio files and ".avi" video files commonly used in the
`Windows® operating environment. "MPEG" is another file
`or media stream format for video information. Available
`media formats also include analog formats including analog
`radio and TV broadcast formats.
`In this document, the "type" of a media stream includes
`both its format and its source. In the prior art, even media
`streams having the same data format must often be treated
`differently by an application program if they originate from
`different sources. For example, the steps for obtaining a
`65 ".wav" media stream from a local source might be quite
`different from obtaining an identical media stream from a
`remote network server.
`
`60
`
`Ex.1010
`APPLE INC. / Page 9 of 13
`
`

`

`6,097,380
`
`5
`
`5
`As mentioned above, media stream controller 53 allows
`application program 52 to create and use programming
`objects to represent different media streams. Such objects
`are implemented in the Microsoft Windows® programming
`environment using features of Object Linking and Embed-
`ding (OLE), also referred to as ActiveX technology. OLE is
`based on a protocol referred to as the Component Object
`Model (COM). COM specifies how objects interact with
`each other using interfaces. OLE and COM have been well
`documented and will not be explained in detail here. For 10
`more information regarding OLE and COM, refer to "OLE
`2 Programmer's Reference" and "Inside OLE 2, Second
`Edition," by Kraig Brockschmidt, both published by
`Microsoft Press of Redmond, Wash., and both of which are
`hereby incorporated by reference.
`Objects and their interfaces are conventionally illustrated
`as shown in FIG. 4. A circle is used to represent each
`interface.
`The services or functions of an object can be used by both
`in-process clients and by out-of-process clients. In addition,
`an object interface can be used by a client executing on a
`different computer. The COM protocol covers all of these
`situations. Calling a remote interface ( one that is in a
`different address space than the calling process) requires the
`use of "stubs" and "proxies," and involves topics such as
`"marshalling" and "unmarshalling" of procedure param(cid:173)
`eters. These mechanisms are well understood and are docu(cid:173)
`mented in the books mentioned above. Also refer to
`"X/Open DCE: Remote Procedure Call," published by
`X/Open Company Ltd., U.K. In addition, the Microsoft 30
`Development Library CD (April 1996), available from
`Microsoft® of Redmond, Wash., contains a Specification
`entitled "Component Object Model Specification 0.9" that
`discusses distributed COM programming. Both of these
`references are incorporated by reference.
`FIG. 5 shows a general-media programming object 60
`implemented by media stream controller 53. Such an object
`is created for every desired media stream and/or source,
`including both analog and digital sources. It includes the
`following interfaces, which are common to all general- 40
`media programming objects; regardless of whether they
`represent analog or digital media services, and regardless of
`whether they represent file-based sources or tuner-type
`sources:
`!Object. This interface has functions for initializing,
`activating, and deactivating the media object.
`!Play. This interface has functions for controlling play(cid:173)
`back of the media object, including functions for
`starting, stopping, and pausing rendering of media
`streams. Additionally, for media sources that have the
`capability, this interface also supports fast-forward and
`rewind operations.
`!Video. The video control interface has functions for
`determining and controlling the size, position, and
`visibility of video output generated by a video media
`object. This interface is not available for media streams
`that do not include video.
`!Audio. This interface, also referred to as the volume
`control interface, has functions for determining and
`controlling the volume levels and audio channel of
`audio produced by the media object.
`!Events. This interface allows an application program to
`receive and respond to events generated by media
`objects.
`These interfaces, and the functions implemented by the
`interfaces, are the same for each instance of a general-media
`
`6
`programming object 60, regardless of the type of media
`source or media stream represented by the object. For
`instance, a general-media programming object representing
`a remote network source has the same interfaces and func-
`tions as a general-media programming object representing
`an analog broadcast source. To control any aspect of the
`rendering from a particular media source, an application
`program invokes the proper interface function of the object
`representing the media source. The application program
`follows the same procedure regardless of the type of the
`media source.
`Underlying each general-media programming object is a
`media-specific object that may be created under the direction
`of application program 52, by some other process in com-
`15 puter 20, or by a remote server. The media-specific object
`has interfaces that allow the general-media object to locate
`the corresponding media source. For instance, for a remote
`server source, the media-specific object allows the general(cid:173)
`media object to determine the server ID and filename of the
`20 media stream that is to be rendered. For a local tuner source,
`the media-specific object indicates the channel number or
`frequency of the subject media stream.
`FIG. 6 shows exemplary media-specific objects. Each of
`these objects has a "Data" interface that returns an identifier
`25 that allows the object to be uniquely identified, and a
`DataSource interface with the functions mentioned above
`that can be invoked to reveal source information. Object 70
`corresponds to a server file source. Object 76 corresponds to
`an AVI (audio-video interleaved) file source. An AVI file
`uses an interleaved format in which video and audio that are
`to be played at the same time are located at the same place
`in the file.
`Object 82 corresponds to an analog broadcast source such
`as an RF (radio frequency) tuner. Object 88 corresponds to
`35 a digital broadcast source such as might be used in some
`foreign countries like Japan
`For the first two types of media-specific objects (server
`file source and AVI source), the DataSource interface has
`functions that return the server ID and filename for a
`particular data file. For the second two types of media(cid:173)
`specific objects (analog and digital broadcast sources), the
`DataSource interface has functions that simply return a
`frequency or channel number for a broadcast media stream.
`FIG. 7 shows how the various objects and components
`45 interact with each other. Application program 52 is shown at
`the top of the diagram. It interacts with one or more
`general-media objects 60, which in turn interact with media(cid:173)
`specific objects 62. Objects 60 interact with the various
`media sources 64, which pass data or signals to appropriate
`50 rendering devices 66. FIG. 7 illustrates rendering audio and
`video from a remote network server, from a local file source,
`from an analog tuner source, and from a digitally-broadcast
`audio/visual source.
`In the present embodiment, an application program fol-
`55 lows the procedure of FIG. 8 to set up a general-media
`programming object. First, the application program per(cid:173)
`forms a step 100 of receiving a source designation that
`specifies a media stream. The source designation indicates a
`filename, a server ID and filename, a channel number, or a
`60 frequency, depending on the type of media source from
`which the media stream will be supplied. In this embodiment
`of the invention, a source designation is literally a reference
`or pointer to an interface of a media-specific object. The
`media-specific object, which may be located locally or
`65 remotely (using OLE and COM), has one or more functions
`that can be invoked to reveal the source information
`(filename, server ID, channel number, frequency, etc.).
`
`Ex.1010
`APPLE INC. / Page 10 of 13
`
`

`

`6,097,380
`
`7
`It should be noted that the application program itself will
`often not be concerned with the details of the media-specific
`objects. Rather, the application program will simply receive
`source designations in the form of references or pointers to
`media-specific objects. In some cases, the application pro(cid:173)
`gram may be responsible for creating a media-specific
`object. In the preferred embodiment, APis are provided for
`this purpose, for different types of media formats and
`sources. The application program can call such an API while
`providing required information about a desired media
`stream, and the API will return a pointer to a media-specific
`object representing the media stream.
`A step 102, performed by an application program, com(cid:173)
`prises instantiating a media manager object. An exemplary
`media manager object 104 is shown in FIG. 9. In includes a 15
`"Manager" interface 106. The Manager interface is the
`central mechanism for accessing any type of media object.
`General-media objects are created using this interface.
`A step 110 comprises passing the received source desig(cid:173)
`nation to an object creation function. The object creation 20
`function is implemented as a method of the Manager inter(cid:173)
`face 106 of media manager object 104. The object creation
`function accepts a pointer to a media-specific object, and
`utilizes methods of that object to determine the source of a
`desired continuous media stream. Based on the source 25
`designation, the object creation function creates a general(cid:173)
`media object such as shown in FIG. 5, representing a media
`source. The same object creation function is invoked by the
`application program regardless of the type of media source
`represented by any particular media-specific object. Regard(cid:173)
`less of the media type, a pointer to the media-specific object
`is passed to the object creation function, and the object
`creation function creates a general-media programming
`object having interfaces as shown in FIG. 5 for controlling
`various aspects of multimedia playback. The general-media 35
`programming object is responsible for dealing with the
`underlying specifics of media sources and rendering
`hardware, or it can utilize lower-level software components
`for handling these responsibilities. The application program
`simply receives a pointer to the general-media programming 40
`object from the object creation function.
`Step 112 comprises invoking the interfaces of the general(cid:173)
`media programming objects to control media rendering from
`the media sources represented by the programming objects.
`At this point, controlling these objects is totally independent 45
`of the media type being manipulated. Changing the volume
`of a file-based media stream is no different than adjusting the
`volume of an analog broadcast, even though different hard(cid:173)
`ware may be manipulated at a lower level.
`As a specific example, suppose that an application pro- 50
`gram will oversee rendering of two different media
`streams-one from a server- and file-based digital media
`source and another from a local analog media source such as
`a tuner. In this case, the application would first either create
`or receive media-specific objects representing the two media 55
`streams-one for the digital data stream and one for the
`analog broadcast stream. It would then pass pointers to these
`objects to a general-media object creation function. The
`object creation function would then create a general-media
`programming object for each of the two media streams. The 60
`general-media programming objects would have identical
`interfaces, and the application program would invoke them
`as necessary to determine or set parameters relating to
`rendering of the media streams.
`Although the invention has been described primarily in 65
`terms of its computer hardware and methodology, the inven(cid:173)
`tion also includes computer readable storage media, such as
`
`8
`electronic memory and non-volatile optical- or magnetic(cid:173)
`based removable mass storage components, containing
`instructions for carrying out the steps described above.
`Furthermore, it is to be understood that the invention is
`5 not limited to the specific features described, since the
`means herein disclosed comprise preferred forms of putting
`the invention into effect. The invention is, therefore, claimed
`in any of its forms or modifications within the proper scope
`of the appended claims appropriately interpreted in accor-
`10 dance with the doctrine of equivalents.
`What is claimed is:
`1. In a computer system that includes a plurality of media
`sources of different types, a method comprising the follow(cid:173)
`ing steps:
`creating programming objects representing the respective
`media sources, the programming objects having com(cid:173)
`mon object interfaces regardless of the types of media
`sources represented by the respective programming
`objects;
`invoking the interfaces of the programming objects to
`control media rendering from the media sources rep(cid:173)
`resented by the programming objects.
`2. A method as recited in claim 1, wherein the common
`object interfaces include:
`a play interface for starting and pausing rendering of
`media streams from the media sources;
`a volume control interface for setting volume levels of
`media streams from the media sources.
`3. A method as recited in claim 1, wherein the common
`30 object interfaces include:
`a play control interface for starting and pausing rendering
`of media streams from the media sources;
`a volume control interface for setting volume levels of
`media streams from the media sources;
`a video control interface for setting position and size
`parameters of video media streams from the media
`sources.
`4. A method as recited in claim 1, wherein the step of
`creating a programming object comprises:
`creating a media-specific programming object represent(cid:173)
`ing a specific media source;
`invoking a general-media object creation function with
`reference to the media-specific programming object,
`the general-media object creation function creating a
`general-media programming object representing the
`specific media source regardless of the type of the
`media source, the general-media programming object
`having the common object interfaces.
`5. A method as recited in claim 1, wherein the step of
`creating programming objects comprises:
`creating programming objects representing digital data
`streams;
`creating programming objects representing analog broad(cid:173)
`casts;
`the programming objects having common object inter(cid:173)
`faces regardless of whether they represent digital data
`streams or analog broadcasts.
`6. In a computer network having a plurality of media
`streams available from one or more network servers, a
`method of playing the media streams at a network client, the
`method comprising:
`receiving a source designation from one of the network
`servers, the source designation specifying a media
`stream;
`creating a programming object representing the media
`source based on the source designation, the program-
`
`Ex.1010
`APPLE INC. / Page 11 of 13
`
`

`

`6,097,380
`
`5
`
`20
`
`9
`ming object having common interfaces regardless of
`the

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