`
`(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
`
`Comcast, 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
`re