throbber
USOO7343419B1
`
`(12) United States Patent
`Robinson
`
`(10) Patent No.:
`(45) Date of Patent:
`
`US 7,343,419 B1
`Mar. 11, 2008
`
`(54) REROUTING MEDIATO SELECTED MEDIA
`APPLICATIONS
`
`(75) Inventor: John Robinson, South Riding, VA (US)
`rsr rr
`(73) Assignee: AOL LLC, Dulles, VA (US)
`c
`- r
`-
`0
`(*) Notice:
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 687 days.
`
`(21) Appl. No.: 09/971,086
`(22) Filed:
`Oct. 5, 2001
`Related U.S. Application Data
`(60) Provisional application No. 60/237,697, filed on Oct.
`5, 2000.
`(51) Int. Cl.
`(2006.01)
`G06F 5/16
`(2006.01)
`HO)4N 7/173
`(2006.01)
`HO4N 7/16
`(52) U.S. Cl. ........................ 709/231; 725/86; 725/135;
`725/141
`(58) Field of Classification Search ................ 709/231,
`709/246, 217, 218, 219, 232; 725/345, 86,
`725/135, 136, 137, 138, 139, 140, 141, 142
`See application file for complete search history.
`References Cited
`U.S. PATENT DOCUMENTS
`
`(56)
`
`st; A ls. Rital - - - - - - - - - - - - - - - 29:
`W - -
`-
`- - - - - - - - - - - - - - - - -
`6,088,717 A * 7/2000 Reed et al. ................. TO9,201
`6,167,567 A 12/2000 Chiles et al.
`6.212,574 B1
`4/2001 O’Rourke et al.
`
`6,263,363 B1* 7/2001 Rosenblatt et al. ......... 709/217
`6,292.824 B1
`9/2001 Siksa
`6,314,501 B1
`1 1/2001 Gulick
`6,374,402 B1 * 4/2002 Schmeidler et al. ........ 717/167
`6,401,099 B1* 6/2002 Koppolu et al. ........ TO7/103 R
`6,460,058 B2 * 10/2002 Koppolu et al. ............ 715.738
`6,564,255 B1* 5/2003 Mobini et al. .............. 709/219
`6,681,325 B1
`1/2004 Marsh et al. .................. 713/2
`6,886, 171 B2
`4/2005 MacLeod
`7,017,189 B1* 3/2006 DeMello et al. .............. T26/26
`2002/0166038 A1 11/2002 MacLeod
`2003/0037178 A1
`2/2003 Vessey
`2003/0202010 A1 10/2003 Kerby et al.
`2005/0210412 A1
`9, 2005 Matthews et al.
`
`* cited by examiner
`Primary Examiner Saleh Najjar
`Assistant Examiner V. Korobov
`(74) Attorney, Agent, or Firm Fish & Richardson P.C.
`(57)
`ABSTRACT
`
`A data stream may be processed using a computer system by
`receiving the data stream using a browser application,
`detecting a COIntent type of data in the data Stream, tempo
`rarily overriding a default rendering process otherwise asso
`ciated with the content type detected for the data in the data
`stream by associating a particular rendering process with the
`data stream based on the type of data in the data stream, and
`routing the data stream to the particular rendering process.
`The default rendering process mav be identified in a regist
`of the computer ". It may ENIS voir E.
`discriminating among internal and external instances of the
`browser application used to receive the data stream, and
`temporarily overriding the default rendering process only if
`the browser application is an internal instance.
`
`17 Claims, 7 Drawing Sheets
`
`
`
`
`
`
`
`
`
`
`
`
`
`Apta para
`Sara use
`stfesus feas
`
`Knot. DATA steam
`isne mm list
`rves a
`?et stu, Estreets
`
`Nasu
`
`sse
`
`sins
`Acess Altant
`.
`of mateue furts to
`was a masa Reef
`aw NT tan
`Sinn
`as it sagsta Ases an M.
`
`See
`
`to drive
`v. Art is
`LL a
`site as
`a
`a mm verse essa St.
`
`Asse
`
`see
`
`Kauts dra starr we
`an Pat
`
`tas
`
`said
`sed
`
`calls
`sa PLA
`stews,
`onal ana
`a mm. Tt stant.
`sarass of sev
`
`se
`
`1
`
`Charter Ex. 1137
`
`

`

`U.S. Patent
`
`Mar. 11, 2008
`
`Sheet 1 of 7
`
`US 7,343,419 B1
`
`OO
`v
`
`
`
`Computer
`
`
`
`Operating
`System
`
`A ligati is
`fogram
`
`Application
`Program
`
`Ile
`
`177
`
`Zl
`
`/O Unit
`
`CPU
`
`
`
`Z3
`Communication
`Card
`
`2
`
`

`

`U.S. Patent
`U.S. Patent
`
`Mar. 11, 2008
`Mar. 11, 2008
`
`Sheet 2 of 7
`Sheet 2 of 7
`
`US 7,343,419 B1
`US 7,343,419 B1
`
`Le
`
`zB14
`
`"rE
`
`-002
`
`
`
`
`
`YyAaAd3aS
`
`902
`
`—A,—
`
`3
`
`
`

`

`U.S. Patent
`U.S. Patent
`
`Mar. 11, 2008
`Mar. 11, 2008
`
`Sheet 3 of 7
`Sheet 3 of 7
`
`US 7,343.419 B1
`US 7,343,419 B1
`
`
`
`
`
`SeeCTar]PETUrURerCcespertenthPen‘7intiSree
`syooqpueHdivsTeresekrecATE)PESTyet,VAI
`
`
`
`
`SHOOCONVH“SNVIdNSIG“SOIOHSSNOULEINISIGJINS
`
`PTTENETwate:aypoacyaboA/a
`
`
`
`
`syooqpuerydrys][arTi][osds][Wozuoyayy][aptajayq][apea
`OEYlatoott)PreeCore)©SCCinb
`
`
`
`
`
`[STONAI(DINVAOO]5344pavejss-drysquevodunsayC
`[Smap{/opuyperauacy][8392qU0D|[suu07][sampayas
`
`
`
`
`
`SNOILVUIdOdIHS
`
`
`voddagjos1uy9a)aujoypuo
`
`RuyKepRarpaysdys/stinow[6]danspapsonos//:diy
`
`
`
`
`
`
`ty
`
`
`GSON“AydouBouncaJvounyryy
`todas
`
`ara
`
`
`
`[Aseysuuepe][STS]
`
`
`
`NOMVWIOINDT¥UINIO
`
`ONPINGIHDSAHS
`
`
`
`ANSVEDONVIIOAONOHMASIIIND
`
`SddItOSs
`
`0}Wwun}{ay
`
`4
`
`
`
`

`

`U.S. Patent
`
`Mar. 11, 2008
`
`Sheet 4 of 7
`
`US 7,343,419 B1
`
`A R Stram
`K 3GVSvo (s
`
`13to
`
`
`
`
`
`As a Synter
`Renot?.
`WSNG Naso A Plaat
`kg (or isvt.se far Nria.
`64 out sur in Streuer
`
`
`
`
`
`5
`
`

`

`U.S. Patent
`
`Mar. 11, 2008
`
`Sheet S of 7
`
`US 7,343,419 B1
`
`
`
`
`
`
`
`
`
`
`
`Ram Paa, Dera
`STPLANM JSN r
`Wifesvur frees
`
`
`
`Kinot dATA Steam
`VSNie NNME Futt?
`fur Stree fen Year
`Aloud sta, in Satdees
`
`SSo
`
`S4C
`
`ACCss ALERN AT RGS
`of Nation pue?ts to 3.
`NWeee re. Mba teams
`Roswelle 39 NVAN \tistrine
`of T 6?ows. As Ed an MAtty.
`
`See
`
`
`
`NaNut of Ste MDM
`Asse e Nam Veft ae can SAM
`
`out dMRA (Arm rit to
`NACM PLA4t
`
`
`
`
`
`Rite
`
`as as a
`
`so
`
`
`
`nava flat or
`3
`naus Genemy
`re. Namt. Taft a
`sarass of seves
`
`an
`
`So
`
`6
`
`

`

`U.S. Patent
`
`Mar. 11, 2008
`
`Sheet 6 of 7
`
`US 7,343,419 B1
`
`Sink Reduest
`
`61 N Use MIME filter to change
`MIME type perceived by
`URLMCN
`
`
`
`
`
`:
`
`s^initiate instance of dummy
`media player to sink
`request
`
`
`
`
`
`l
`
`630
`
`Route altered media
`stream to dummy player
`
`Fig. 6
`
`7
`
`

`

`U.S. Patent
`
`Mar. 11, 2008
`
`Sheet 7 of 7
`
`US 7,343,419 B1
`
`Non-default function
`440 y
`
`NEW METHOD - AP HOOK
`
`browser function
`
`URLMON function
`
`710 ^-
`1
`is this an Internal
`instance of the browser?
`
`
`
`~2.
`
`NO ana
`required
`
`N:
`
`Y
`
`730 r intercept calls intended to
`create bind context
`
`:
`
`-Y-
`M. Create bind context with
`desired media player
`registered for target MitME
`type
`
`'ll Bind context is available
`to rowser
`
`Use bind context
`;
`760 Nue
`"it is
`system registed media
`player
`
`- Y -
`780
`77C 1-
`--N Route data streat to
`knitiate instance of
`alternate media player -> altertate tedia player
`-
`
`Fig. 7
`
`8
`
`

`

`US 7,343,419 B1
`
`1.
`REROUTING MEDATO SELECTED MEDIA
`APPLICATIONS
`
`CROSS-REFERENCE TO RELATED
`APPLICATIONS
`
`This application claims priority to U.S. Provisional Appli
`cation No. 60/237,697, filed on Oct. 5, 2000, which is
`incorporated herein by reference.
`
`TECHNICAL FIELD
`
`The disclosure relates generally to the manipulation of
`content being accessed by a computer, and more specifically
`to rerouting multimedia content received by a computer
`having an operating system that maintains default settings
`for specific data types of multimedia content.
`
`BACKGROUND
`
`A browser is often used to receive, process, and display
`electronic media content made available through a computer
`network or from the memory of a local computer. The
`browser may include functionality for processing and dis
`playing some types of media content to the user, but may
`need to call upon and export data to external media players
`when other types of media content need to be processed and
`displayed to the user. The browser may access a registry of
`alternate media players available for processing particular
`types of media content, and certain alternate media players
`may be designated as default players for certain media types.
`If multiple instances of a single browser or several different
`browsers are loaded, however, the media players specified
`by the registry are applied to each of the browser loads.
`
`SUMMARY
`
`10
`
`15
`
`25
`
`30
`
`35
`
`2
`Furthermore, the content type may be redefined after
`routing the data stream to prevent Subsequent processing of
`the data stream by the default rendering.
`In another general aspect, a data stream stored on a
`computer readable medium may be processed by receiving
`a data stream using a browser application, identifying a
`stream type for the data stream, and directing the data stream
`away from a data process designated as a default by the
`computer system based on the data type identified for the
`data stream.
`Implementations may include one or more of the follow
`ing features. For example, the process may include deter
`mining whether a browser is embedded as an internal
`instance of a Software application, such that the data stream
`is directed away from the data process designated as the
`default when determined to be an internal instance. Further
`more, the data type may be a Multipurpose Internet Mail
`Extensions (MIME) data type.
`In yet another general aspect, a data stream may be
`processed by calling a data stream using a browser running
`on a computer system, detecting a first type of data associ
`ated with the data stream called by the browser, and rede
`fining the first type of data as a second type of data.
`Implementations may include one or more of the follow
`ing features. For example, the first and second types of data
`may be Multipurpose Internet Mail Extensions (MIME)
`standard types. When a MIME filter is loaded into an
`operating system of the computer, the processing may
`include receiving notification in the browser that a data
`stream is available for filtering by the MIME filter, and/or
`activating a multimedia Subsystem player running on the
`computer system to render the data stream. In addition, the
`processing may include passing the data stream to the player.
`These general and specific aspects may be implemented
`using a system, a method, or a computer program, or any
`combination of systems, methods, and computer programs.
`The details of one or more implementations are set forth in
`the accompanying drawings and the description below.
`Other features and advantages will be apparent from the
`description and drawings, and from the claims.
`
`DESCRIPTION OF DRAWINGS
`
`FIG. 1 is a block diagram of a computer system.
`FIG. 2 shows a typical graphical user interface (GUI)
`environment.
`FIG. 3 is a screenshot of a browser window.
`FIG. 4 is a flow chart of a process for determining if a data
`stream should be rendered with a desired alternate media
`player.
`FIG. 5 is a flow chart of a process for routing electronic
`media content to a desired software application.
`FIG. 6 is a flow chart of a process for sinking a data
`Stream.
`FIG. 7 is a flow chart of a process for routing electronic
`media content to a desired software application.
`Like reference symbols in the various drawings indicate
`like elements.
`
`DETAILED DESCRIPTION
`
`Referring to FIG. 1, a computer system 100 represents a
`hardware setup for executing Software that allows a user to
`perform tasks Such as communicating with other computer
`users, accessing various computer resources, and viewing,
`creating, or otherwise manipulating electronic media con
`tent—that is, any combination of text, images, movies,
`
`40
`
`In one general aspect, a data stream may be processed
`using a computer system by receiving the data stream using
`a browser application, detecting a content type of data in the
`data stream, temporarily overriding a default rendering
`process otherwise associated with the content type detected
`for the data in the data stream by associating a particular
`rendering process with the data stream based on the type of
`data in the data stream, and routing the data stream to the
`45
`particular rendering process.
`Implementations may include one or more of the follow
`ing features. For example, the data in the data stream may be
`a Multipurpose Internet Mail Extension (MIME) data, which
`may be received in response to a request from the browser
`application.
`The default rendering process may be identified in a
`registry of the computer system. It may be temporarily
`overridden by discriminating among internal and external
`instances of the browser application used to receive the data
`stream, and temporarily overriding the default rendering
`process only if the browser application is an internal
`instance. As such, the data stream may be routed to the
`default rendering process if the browser application is an
`external instance. The default rendering process may be
`identified in a registry of the computer, which is Supple
`mented with the particular rendering process in order to
`override the default rendering process if the browser appli
`cation is an internal instance. The data stream may be
`processed using the temporary rendering process, which
`thereafter is disassociated with the type of data in the data
`Stream.
`
`50
`
`55
`
`60
`
`65
`
`9
`
`

`

`US 7,343,419 B1
`
`10
`
`3
`music or other sounds, animations, 3D virtual worlds, and
`links to other objects. The computer system 100 of FIG. 1
`also may be programmed with computer-readable instruc
`tions to enable content to be perceived (for example,
`viewed) without being captured (for example, copied, saved,
`or printed).
`The system includes various input/output (I/O) devices
`(for example, mouse 103, keyboard 105, display 107) and a
`general purpose computer 110 having a central processor
`unit (CPU) 121, an I/O unit 117 and a memory 109 that
`stores data and various programs such as an operating
`system 111, and one or more application programs 113. The
`computer system 100 also may include Some sort of com
`munications card or device 123 (for example, a modem or
`15
`network adapter) for exchanging data with a network 127
`through a communications link 125 (for example, a tele
`phone line).
`As shown in FIG. 2, using network 127, a computer
`system can access electronic content or other resources
`either stored locally at a local client system 202 (for
`example, a personal or laptop computer), remotely at one or
`more server systems 200, or at other client systems 202. An
`example of a server system 200 is a host computer that
`25
`provides Subscribers with online computer data and services
`Such as e-mail, e-commerce, chat rooms, Internet access,
`electronic newspapers and magazines.
`Users of a host computers online services typically
`communicate with one or more central server systems 200
`through client Software executing on their respective client
`systems 202. In practice, a server system 200 typically is a
`network of interconnected server computers rather than a
`single monolithic entity. The servers may be physically
`dispersed from each other, and each may be dedicated to its
`own set of duties and/or to a particular geographical region.
`Where the server computers are physically dispersed, they
`may be interconnected by a network of communication
`links.
`Each client system 202 runs client software that enables
`communication with corresponding Software running on the
`server system 200. The client systems 202 communicate
`with the server system 200 through various channels 204
`and lines 206, Such as a modem connected to a telephone
`line, a direct Internet connection using a transfer protocol
`such as TCP/IP (Transmission Control Protocol/Internet
`Protocol), a cable modem and cable line(s), an integrated
`services digital network (ISDN), or some other transfer
`protocol. The server system 200 is responsible for receiving
`input from the client systems 202, manipulating the collec
`tive body of input information (and possibly information
`from other sources) into a useful format, and retransmitting
`the formatted information back to one or more clients 202
`for output on an output device, such as a display Screen.
`A “browser' is an example of client software that enables
`access and viewing of electronic content stored either locally
`or remotely, such as in a network environment of intercon
`nected computer systems (for example, local area network
`(LAN), wide area network (WAN), intranet, Internet). A
`browser typically is used for displaying documents
`60
`described in Hyper-Text Markup Language (HTML) and
`stored on servers connected to a network Such as the
`Internet. A user instructs a browser to access an electronic
`document (e.g., a web page) by specifying a network
`address—or Uniform Resource Locator (URL)—indicating
`the location of a desired web page. In response, the browser
`contacts the corresponding server 200 hosting the requested
`
`45
`
`4
`web page, retrieves the one or more files that make up the
`web page, and then displays the web page in a window on
`the user's computer Screen.
`FIG. 3 is a screenshot of a browser application 300
`displaying a typical web page 302. As shown therein, a
`single web page 302 may include several different files of
`similar or different data types 304 (for example, text, graph
`ics, images, virtual worlds, Sounds, and movies). The
`browser 300 may display or play data content using its own
`internal functionality or, if data content contained in web
`page 302 is a type that cannot be displayed with the
`browser's internal functionality, it may export the data
`content to an alternate media player so that the data content
`may be processed and displayed by the alternate media
`player.
`Web page 302 can include links 306 pointing to other
`resources (for example, other web pages or individual files)
`available at the server system 200 or through the network
`127. Links 306 can take virtually any visual form. For
`example, they can appear as a text string, as a graphical
`image, or as a combination thereof. Each link 306 has an
`associated URL pointing to a location on the network 127.
`When a user selects a displayed link 306, the browser may
`retrieve the web page (or other resources, such as, for
`example, movies or sound files) corresponding to the URL
`associated with the link automatically and may attempt to
`display and execute the electronic information of the
`retrieved web page or resource. If the browser cannot
`display and execute a data type contained in the retrieved
`web page or resource with its internal functionality, it may
`export the data content to an alternate media player appli
`cation, so that the data content may be processed and
`displayed by the alternate media player.
`An example of a browser is Microsoft Internet ExplorerTM
`(IE). IE typically may be used as a standalone application,
`but it also may be used by other applications, for example,
`as an ActiveXTM component to allow those applications to
`call upon IE’s functionality and have IE's functionality
`blend in with and appear as a component and integral part of
`those applications. Some applications can embed IE func
`tionality using the ActiveX component to provide a web
`browsing and information display capability, but without the
`outward appearance that IE presents to a user as a standalone
`application. For example, a software application provided by
`an Internet Service Provider (ISP) to enable its subscribers
`access to the ISP's servers may use IE functionality as an
`ActiveX component, but may display a non-IE graphical
`user interface (GUI) to the subscriber, so that subscribers
`identify the application with the ISP rather than with IE.
`Such an embedded instance of IE may be referred to as an
`“internal browser,” as contrasted with using IE as a standa
`lone application, in which case, IE as a standalone applica
`tion may be referred to as an “external browser.”
`Whether IE is used as an internal browser or an external
`browser to locate and access data from either a local or
`remote location, it may be used to retrieve a stream of data.
`Examples of data stream types include text, hypertext,
`graphics, Soundfiles, and multimedia. For IE to properly
`handle a stream of data, IE generally receives information
`indicating the type of data included in the stream, or
`otherwise gleans the type of data from the stream. For this
`purpose, IE uses a content-type encoding standard known as
`the MIME (Multipurpose Internet Mail Extensions) standard
`to specify the type of data included in the media stream. A
`MIME type includes a <types/<subtypes specifier. Some
`protocols, such as HTTP provide a mechanism for specify
`ing the MIME type of a stream. Examples include “text/
`
`30
`
`35
`
`40
`
`50
`
`55
`
`65
`
`10
`
`

`

`US 7,343,419 B1
`
`10
`
`15
`
`25
`
`35
`
`5
`html for an HTML type text stream, “text/plain for a plain
`text type stream, and “image/jpeg' for a jpeg image stream.
`For other protocols that do not explicitly identify the MIME
`type of a stream, the MIME type of the stream may be
`identified using one or more diagnostic tests or filters.
`As a browser, IE can include and access built-in func
`tionality to reproduce or display Some types of media, Such
`as HTML, plain text, and JPEG images, while including
`functionality to export those and other media types, such as
`sound files and video files, for reproduction by one or more
`alternate media players, such as RealNetworks RealPlayer(R)
`or Microsoft Windows Media Players(R).
`The MIME type associated with a data stream may be
`used to determine whether the media stream should be
`reproduced and displayed by the browser or whether the
`media stream should instead be exported by the browser for
`reproduction and display by an alternate player. IE allows
`for the registration of media players that are capable of and
`ultimately responsible for, reproducing or displaying the
`media types handled by IE internally, as well as those
`handled by IE externally, so as to enable desired media
`players to be specified for particular media types.
`Specifically, a mapping from MIME type to media player
`may be maintained within the operating system (OS). For
`example, in the WindowSR operating system, a registry of
`mappings (WindowS(R) registry) is maintained that associates
`data stream types with media players. Under normal cir
`cumstances, this mapping is used to resolve the appropriate
`media player for an incoming data stream, whether IE is
`30
`running as an internal or external browser. Because the
`alternate media player for reproducing or playing a type of
`data stream is determined by the OS mapping, however, an
`application using IE as an ActiveX component may modify
`the mapping if media players other than those specified in
`the Windows(R registry are desired. This modification may
`be performed by changing the Windows(R registry itself, or
`by overriding or supplementing the Windows.(R) registry with
`other or additional registrations. In this way, it is possible to
`control the choice of media player, without modifying the
`Windows(R registry by modifying the choice of the alternate
`media player to which a data stream is directed when IE
`operates as an external browser.
`Referring to FIG. 4, analysis 400 of a data stream is
`performed to determine whether an alternate media player
`should be called to play the data stream. After a data stream
`is requested by or directed to a browser (step 410), analysis
`is performed to determine whether the browser instance is
`internal or external (step 420).
`In one implementation, after the browser receives a data
`stream (step 410), a MIME filter is applied to the data
`stream. A MIME filter is an asynchronous pluggable proto
`col (APP) that is implemented as a Component Object
`Model (COM) used to implement a set of COM interfaces.
`The MIME filter typically is invoked for a specified MIME
`55
`type and is used to perform some operation relative to that
`MIME type. In this instance, it is used to discriminate
`between internal instances and external instances of the
`browser, and to load temporary Windows(R registrations for
`MIME types or to perform specified functions for the MIME
`60
`types upon the occurrence of an internal browser instance
`(described later with respect to step 440).
`IProtocolSink is an interface for pluggable MIME filters
`that is used to receive notifications if/when data is available
`for filtering. IProtocolSink allows the APP to obtain a
`window handle for the client performing the bind operation.
`Although this window handle typically is used for other
`
`50
`
`40
`
`45
`
`65
`
`6
`purposes, it can be used to determine whether an instance of
`a MIME filter originated from an internal browser.
`If the browser is not an internal browser, the data stream
`may be handled using the default process (step 430). How
`ever, if the browser instance is internal, then action may be
`taken to render the data stream using a media player accord
`ing to mappings other than those maintained for external
`instances of the browser (step 440), which media player may
`or may not differ from the media player identified by the
`mappings maintained for external instances (hereinafter “an
`alternative media player') as described, for example, with
`respect to FIGS. 5-7.
`Referring to FIG. 5, a MIME filter may be used to identify
`a media player to be used in rendering a data stream
`retrieved or directed to an internal instance of the browser.
`Specifically, the MIME type for a data stream is checked
`against registrations or mappings that are maintained for
`internal instances of the browser (step 510). For example,
`MIME filters can be registered either permanently or tem
`porarily. Permanent MIME filters are registered within the
`Windows(R registry and tend to affect all instances of IE,
`unless preempted by temporary MIME filters. Temporary
`MIME filters are associated with a specific instance of IE
`and tend to be given priority over permanent MIME filters
`when handling a data stream. When multiple temporary
`MIME filters are registered for a particular MIME type, the
`order of selection among the multiple temporary MIME
`filters may be inverted relative to the order used for their
`registration (e.g., the most recently registered MIME filter is
`selected first), or otherwise. In this instance, temporary
`MIME filters may be loaded when an internal instance of the
`browser is detected/invoked and removed when that internal
`instance of the browser is shut down.
`If a MIME filter is not registered for the MIME type of the
`data stream, the data stream may be handled using some
`other default process (step 520). If there is a temporary or
`permanent MIME filter that is registered for the data
`stream's MIME type, an instance of that MIME filter is
`established (step 530).
`Next, analysis is performed to determine whether the data
`stream was requested by an internal instance of a browser
`(step 540). This analysis may be performed as described
`above in FIG. 4. If the data stream was not requested by an
`instance of an internal browser, additional action may not be
`required and the default media player may be called to
`render the data (step 550).
`If the data stream was requested by an instance of an
`internal browser, the registry structure is modified to include
`registrations of media players appropriate for internal
`instances of the browser or some other list of alternate media
`player registrations is accessed, and that modified or alter
`nate registry is analyzed to determine which media player is
`registered for the MIME type (step 560). Then, an instance
`of an appropriate alternate media player is established (step
`570) and the data stream is effectively routed for rendering
`to the alternate media player (step 580). Absent further
`processing, after the media stream is rendered, the MIME
`filter returns the data stream to URLMON. Therefore, to
`prevent invocation of a second media player according to the
`modified Windows.(R) registry, it may be desirable or neces
`sary to sink the data stream (step 590).
`FIG. 6 illustrates one implementation for sinking a call for
`a default media player ordinarily generated for data streams
`of similar MIME type by external instances of a browser
`(step 590). In this implementation, the MIME filter changes
`the MIME type of the data stream returned to URLMON to
`a predetermined MIME type (step 610) for which no media
`
`11
`
`

`

`15
`
`7
`player or a dummy media player has been registered. As a
`result, when the browser detects the altered MIME type in
`the data stream, the browser will initiate either no media
`player or an instance of this dummy media player, as
`appropriate (step 620). Then, to complete the data sink, the
`modified data stream is effectively routed to this dummy
`media player, which accesses the data stream and either
`discards the data stream or performs some trivial or back
`ground function on the data stream.
`Referring to FIG. 7, a data stream also can be directed to
`an alternate media player using an API hooking approach.
`This alternate approach provides a similar result to the
`procedure described above in FIGS. 5 and 6. However, using
`this approach, it may be possible to eliminate the step of
`sinking the data stream returned to an internal browser.
`Similar to steps 420 and 540 described above, the instance
`of the browser is analyzed to determine whether it is an
`internal browser or an external browser (step 710). If the
`browser is not an internal browser, no additional action is
`required and the browser will function according to default
`settings (step 720).
`If the browser is an internal browser, then calls used to
`initiate the creation of a default bind context that is ordi
`narily created for each invocation of a browser are inter
`cepted (step 730), preferably before the browser can create
`the bind context necessary to invoke the browser. More
`specifically, the bind context is an object typically used to
`hold information useful in overriding default information
`registered with the operating system. Since a bind context
`ordinary is created for each invocation of a browser, any
`override of default information is used only for the current
`transaction.
`Specific calls typically are used for bind context creation.
`For example, calls to CreateBindCtX or Create Asyn
`cBindCtX may be intercepted because they are used to create
`a bind context via OLE32 or URLMON, respectfully. This
`typically is referred to as Import Address Table (IAT)
`hooking. The IAT is a special section within the Portable
`Executable (PE) file format that is used to dispatch calls to
`imported functions located within other modules. Functions
`that are imported for use from other Dynamic Link Library
`(DLL) modules are not called directly by the importing DLL
`or module, but rather are called indirectly through a dispatch
`table of function pointers. Thus, using this method, calls to
`imported functions may be intercepted by manipulating the
`function pointers within a dispatch table rather than calling
`the function directly. In this implementation, the intercepted
`call may be used to provide a pointer, IBindCtx, to the bind
`context that can be used later.
`After the bind context is created, the alternate media
`player is registered in the bind context (step 740). A pointer
`to the bind context may be required for this registration. The
`IBindCtX pointer (e.g., acquired during step 730) can be
`used for this purpose. Additionally, the IBindCtX pointer can
`be passed as a parameter to the function call RegisterMe
`diaTypeClass to register the alternate media player.
`The bind context is now available to the browser (step
`750). The browser uses settings from the bind context to
`override the default media player registration with the
`alternate media player. As a result, the browser calls the
`alternate media player to render the data stream instead of
`the default media player (step 760).
`The browser then initiates an instance of the alternate
`media player (step 770) and the data stream is effectively
`routed to it for rendering (step 780).
`65
`A number of implementations have been described. Nev
`ertheless, it will be understood that various modifications
`
`40
`
`45
`
`50
`
`55
`
`60
`
`US 7,343,419 B1
`
`10
`
`25
`
`30
`
`35
`
`8
`may be made which are within the scope of the following
`claims. For instance, in the process shown by FIG. 5, it is
`possible to rearrange the order of processing Such that a
`pre-screening is performed to identify internal instances of
`browser at the outset (step 540), rather than after a com
`parison of the MIME type to stored MIME filters.
`What is claimed is:
`1. A method of processing a data stream with a computer
`system, the method comprising:
`receiving a data stream using a browser application;
`detecting a content type of data in the data stream;
`determining whether the browser application is invoked
`within an application environment of an internet Ser
`vice provider to enable a subscriber of the internet
`service provider to access an online resource;
`temporarily overriding a default rendering process other
`wise associated with the content type detected for the
`data in the data stream by associating a particular
`rendering process with the data stream based on the
`content type of data in the data stream and based on
`res

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