US 8050495 B2
A rich media file is a self-contained file, including both the information to be viewed by a user and the viewer that displays the information to the user. The information can be formatted however the client likes: for example, the information can be split across several pages, and can include text and still and animated images. There can also be web links to pages on a network, and e-mail forms to simplify sending an e-mail message to the client. The rich media file can include viewing limitations, so that only the proper password can unlock the file, or that the rich media file will automatically expire after a specified condition occurs. The rich media file also assists the user in obtaining the latest version of the rich media file, by offering to retrieve a newer version for the user.
1. A method, comprising:
retrieving a rich media file from a network, the rich media file including compressed information and a viewer configured to display the information after decompression on a computer, the compressed information and the viewer contained in a single file; and
de-compressing the information, wherein de-compressing the information comprises:
decoding a probability value for a compressed color for a pixel;
determining whether the probability value represents the same color as a left neighbor color for a left neighbor of the pixel or an upper neighbor color for an upper neighbor of the pixel using a probability model, the probability model being one of a plurality of probability models in a probability set that include a probability value that the compressed color for the pixel represents the same color as a left neighbor color for a left neighbor of the pixel or an upper neighbor color for an upper neighbor of the pixel;
decoding an uncompressed color for the pixel; and
updating the probability model.
2. A method according to
3. A method according to
4. A method according to
5. A method according to
6. A method according to
7. A method for building a rich media file, the method comprising:
assembling information for the rich media file;
compressing the information, including:
detecting a background color of the information;
selecting a part of the information that includes a color other than the background color;
dividing the information into at least two tessellations of blocks, each tessellation of blocks including at least one block, wherein each block includes at least one pixel with a color other than the background color and each pixel in the information with a color other than the background color is included in exactly one block in each tessellation;
estimating a size for each tessellation, wherein each block in each tessellation is compressed separately;
selecting a tessellation with a smallest estimated size; and
compressing each block in the selected tessellation separately; and
coupling the compressed information with a viewer; and
converting the compressed information and the viewer to the rich media file, so that the rich media file is configured to leave no footprint on a user's system when removed.
8. A method according to
locating at least one block in the information that includes a pixel with a color other than the background color; and
compressing each block separately.
9. A method according to
10. A method according to
computing a distance frame between a first frame and a second frame of the information;
dividing the distance frame into at least two tessellations of blocks, each tessellation of blocks including at least one block, wherein each block includes at least one pixel with a color other than the background color and each pixel in the distance frame with a color other than the background color is included in exactly one block in each tessellation; and
estimating a size for each tessellation of the distance frame, wherein each block in each tessellation is compressed separately; and
selecting a tessellation includes selecting a tessellation from the tessellations of the information and the tessellations of the distance frame with a smallest estimated size.
11. A method according to
12. A method for building a rich media file, the method comprising:
assembling information for the rich media file;
compressing the information, including:
identifying a pixel color for a pixel;
identifying a left neighbor color for a left neighbor of the pixel;
identifying an upper neighbor color for an upper neighbor of the pixel;
comparing the pixel color with the left neighbor color and the upper neighbor color;
encoding the pixel color based on the comparison using a probability model, the probability model being one of a plurality of probability models in a probability set that include a probability value that the compressed color for the pixel represents the same color as a left neighbor color for a left neighbor of the pixel or an upper neighbor color for an upper neighbor of the pixel; and
updating the probability model;
coupling the compressed information with a viewer; and
converting the compressed information and the viewer to the rich media file, so that the rich media file is configured to leave no footprint on a user's system when removed.
13. A method according to
14. A method according to
15. A method according to
16. A method according to
17. A method according to
18. A method according to
19. A method according to
20. A method according to
This application is a continuation-in-part of U.S. patent application Ser. No. 09/772,541 filed Jan. 29, 2001, now U.S. Pat. No. 7,412,478, issued Aug. 12, 2008, entitled “RICH MEDIA FILE FORMAT AND DELIVERY METHODS”, which claims the benefit of U.S. Provisional Patent Application Ser. No. 60/178,482, filed Jan. 27, 2000, U.S. Provisional Patent Application Ser. No. 60/199,781, filed Apr. 26, 2000, and U.S. Provisional Patent Application Ser. No. 60/230,043, filed Sep. 1, 2000, all of which are hereby incorporated by reference. This application is also a continuation-in-part of U.S. Pat. application serial No. 11/370,514 filed Mar. 7, 2006, now U.S. Pat. No. 7,295,704, issued Nov. 13, 2007, entitled “IMAGE COMPRESSION USEABLE WITH ANIMATED IMAGES”, which is a continuation of U.S. patent application Ser. No. 10/960,360, filed Oct. 6, 2004, now U.S. Pat. No. 7,113,638, issued Sep. 26, 2006, which is a continuation of U.S. patent application Ser. No. 09/771,360, filed Jan. 26, 2001, now U.S. Pat. No. 6,909,804, issued Jun. 21, 2005, which claims the benefit of U.S. Provisional Patent Application Ser. No. 60/178,482, filed Jan. 27, 2000, U.S. Provisional Patent Application Ser. No. 60/199,781, filed Apr. 26, 2000, and U.S. Provisional Patent Application Ser. No. 60/230,043, filed on Sep. 1, 2000, all of which are hereby incorporated by reference.
This invention pertains to a portable document format, and more particularly to a cross-platform portable document format and delivery method that supports complicated pages.
The rise of the internet and the world wide web has made the sharing of information an attainable goal. But compatibility between computers remains a concern. Many computers cannot read each other's files, because of differences in format. When a web site wants to provide information in streaming and portable files to its clients, it has to prepare different versions of the files for each different type of computer that may need to access the files.
Software can help to reduce this problem, in that the data can be left in a platform-independent, proprietary data format. Different viewers are then used to read the document on different computer platforms. But this solution introduces its own problems. To be able to read the document, the user has to install the viewer on his computer system. Without the viewer, the user is unable to read the document. And once installed, the viewer stays resident on the user's system. This means that even when the user is done reading the document, a footprint is left on the user's system: the viewer. Subsequent updates can obsolete the stored viewer, requiring download of an updated viewer.
In addition, the current viewer technology is dependent on the user requesting the file. Although “push technology” has been around for some time, viewing software is entirely dependent on the user selecting the document for download. Currently, there is no technology that supports that automatic delivery of new documents to the user.
Accordingly, a need remains for a platform-independent viewer that leaves no footprint on the user's system and that can automatically deliver a new document to the user that addresses these and other problems associated with the prior art.
The invention is a rich media file designed to provide the user with information displayed in a file that, when deleted, leaves no footprint on the user's system. The rich media file includes information, formatted by the client (i.e., the builder of the rich media file) for display. Embedded in the rich media file is a viewer operable on the user's computer system. The rich media file can be deleted in a single step, removing both the information and the viewer, and leaving no footprint on the user's computer system.
The invention further includes a method for retrieving, downloading, and updating a rich media file. A user selects a link on a network. The rich media file is delivered using a unique file identification stored within the link, the unique file identification being other than a file name for the rich media file. The user can then save the rich media file on his computer system, and delete the rich media file at will, leaving no footprint on the user's system.
The invention further includes a method for building a rich media file. A client assembles the information for the rich media file, and formats the information as desired for display. The information is compiled into an intermediate file format, which is then coupled with a viewer and stored as a rich media file. The rich media file is designed as a unitary file, so that by deleting just the rich media file, no footprint remains on a user's computer system.
The invention further includes an intermediate file format used to store the client's collected information before the rich media file is compiled, and a database for storing information about transactions involving rich media files.
The foregoing and other features, objects, and advantages of the invention will become more readily apparent from the following detailed description, which proceeds with reference to the accompanying drawings.
Rich Media Files
Rich media file 130 includes information 135 and viewer 140. Information 135 contains the information the builder of rich media file 130 desires the user to view. More detail about what can constitute information 135 is discussed with reference to
In the preferred embodiment, although rich media file 130 includes both information 135 and viewer 140, information 135 and viewer 140 are stored separately and assembled (using the appropriate viewer for the user's computer platform) just before delivery to the user. This allows for rich media file 130 to be extensible. For example, as new features are added to rich media file 130, the new features become available to users receiving rich media file 130, even if information 135 was stored before the new features were available. Or additional objects or functions can be added to rich media file 130, all without affecting the end user. However, a person skilled in the art will recognize that a variety of rich media files can be pre-assembled for each type of computer platform and stored in anticipation of need.
In the preferred embodiment of the invention, version number 207 is also included to distinguish among different versions of rich media file 130. The combination of unique ID 205 and version number 207 is unique across all versions of all rich media files. This allows for storage and identification of past versions of rich media file 130 without changing unique ID 205 for each version of rich media file 130. However, a person skilled in the art will recognize that the combination of unique ID 205 and version number 207 can be replaced with a single, unique identifier.
Client ID 208 is a unique identifier that identifies the client that built a specific rich media file 130. Client ID 208 allows for searching of all rich media files assembled by the client, but a person skilled in the art will recognize that client ID 208 can be eliminated without losing any functionality in rich media file 130. Unlike the remaining elements of rich media file 130, unique ID 205, version number 207, and client ID 208 are normally added automatically when rich media file 130 is built: the client does not have to specify them.
Viewing limits 210 specify access and function controls for rich media file 130. There are several different types of viewing limits that can be used, and a person skilled in the art will be able to recognize other alternatives. The normal types of viewing limits 210 include automatic expiration mechanisms and passwords. Expiration mechanisms are designed to cause rich media file 130 to expire after certain conditions are met. The user is presented with a dialog box, informing him that rich media file 130 is expired. The user can then be allowed to continue using rich media file 130, disallowed from using rich media file 130, or offered the option to try another rich media file. Typical expiration conditions include allowing the user to view rich media file 130 a certain number of times, or over a certain number of days, or until a particular, predetermined date is reached. Passwords require the user to enter the correct password set by the designer of rich media file 130 before rich media file 130 can open. If the wrong password is entered, rich media file 130 does not open for the user.
Where rich media file 130 can expire upon reaching a viewing limit, the client can provide the user the option of attempting to locate a newer version of rich media file 130. Update offer 215 prompts the user, asking whether rich media file 130 should check for a newer version of the same rich media file. If the user so specifies, this is accomplished by querying the server on which rich media file 130 was originally stored and providing unique ID 205 and version number 207. If a newer version of rich media file 130 exists (or if a specified file in a series of files is listed for such a situation), then requester 220 can request the newest version of the file from the server. The file can be delivered by download, e-mail, and other retrieval mechanisms.
Even if no viewing limits are imposed, rich media file 130 can check for an update of itself anyway. Update offer 215 and requester 220, although they inter-operate with viewing limits 210, can operate separately.
Finally, rich media file 130 is designed to be modular. This means that the builder can specify certain features to be included with rich media file 130, and exclude others. An example of this is the ability to print rich media file 130 using printing module 225. If the client does not want to allow the user to print rich media file 130, the client can exclude printing module 225. If the client chooses to exclude modules like printing module 225, rather than just disabling the code for these modules, the code for these modules is excluded from rich media file 130. This helps keep rich media file 130 at its smallest size. Other modules that the client can choose to include or exclude are zooming (looking closely at one part of rich media file 130, typically in an image), the ability to easily forward a copy of rich media file 130 to a friend (by simply providing the friend's e-mail address, the friend can receive rich media file 130), and a status bar.
In addition, viewing limits 210 discussed above are another module that can be included or excluded. If the client includes a viewing limit, such as a password for rich media file 130, viewing limits 210 are included with rich media file. If no viewing limit is specified, viewing limits 210 are excluded from rich media file 130, thereby reducing the size of rich media file 130.
Information 135 can also include e-mail link 325. E-mail link 325, when activated, opens a form for sending an e-mail message using the user's preferred e-mail handler. In the preferred embodiment, e-mail link 325 can, if so designated by the client, automatically fill in the destination for the e-mail, since usually the user will select e-mail link 325 to send an e-mail to the builder of the rich media file. But a person skilled in the art will recognize that the form opened by e-mail link 325 can be completely blank, and can be independent of any e-mail handler used by the user.
In page 410, the builder has specified web link 420. Web link 420, when selected by the user, opens the user's preferred network browser program and takes the user to the specified Universal Resource Locator (URL) over network 425. This opens a particular page on the network for display to the user.
Page 410 also includes e-mail link 430. As discussed above with reference to
The above description for the storage of rich media file 130 on remote server 510 is the preferred embodiment. This simplifies maintenance of the rich media file, as the client does not have to store and track the different versions of rich media file 130. However, a person skilled in the art will recognize that rich media file 130 can be returned to client 505 instead of link 525, and client 505 can be responsible for maintaining rich media file 130. Similarly, although rich media file 130 is described as being built on remote server 510, a person skilled in the art will recognize that, with the appropriate software installed, client 505 can convert the data into rich media file 130 itself. But this approach can leave client 505 building rich media file 130 with a viewer lacking streaming ability or new features, if the build software is eventually updated.
It is important to note that, in the preferred embodiment described in
At step 615, the term “download” was used to describe the procedure for retrieving the rich media file. Although the rich media file can be downloaded over the network from the remote server, a person skilled in the art will recognize that there are other methods for delivering the rich media file to the user. For example, the rich media file can be attached to an e-mail message and delivered by electronic mail to the user (assuming the user's e-mail address is known). E-mail delivery of streaming rich media files to users is the preferred form of delivery. In another variation, the rich media file can be streamed from the remote server, rather than being completely delivered to the user.
In addition to updating an expired file, the client can design the rich media file to “update” to a different file. For example, the client might desire that, after the rich media expires, the user be offered the choice of a different rich media file. Thus, the rich media files can “chain,” instead of updating to the latest version of the downloaded rich media file.
It can also happen that there is no update to the rich media file currently available. Although the user is no longer permitted to view the rich media file, if there is no later version, the user has nothing else to view. The user can then place his name on an update list, so that when the latest version of the rich media file becomes available, it will automatically be provided to the user.
At step 932, a unique file ID is assigned to the intermediate file format upon the first save in the design tool. The version number and the client ID are also assigned to the intermediate file format, each time the client makes changes to the intermediate file format. At step 940, the information is uploaded to the remote server, where the information will be compiled into a rich media file. (In the preferred embodiment, the remote server will not compile the information into a rich media file and add a viewer unless the client ID attached to the intermediate file format matches a valid client ID stored in the database on the remote server. See
In the preferred embodiment, steps 905-932 of
Exemplary embodiments of compression techniques for the information in the rich media file will now be described. As described above, the information may include text, images, animations, etc. The following description refers to the compression of an image, but a person skilled in the art will recognize that the techniques described below are applicable to any text, images, animations, etc. that are included in the information.
Computer system 1005 stores image 1030. Typically, image 1030 is loaded into a memory of computer system 1005. A person skilled in the art will recognize that image 1030 can be accessed in various ways: for example, over a network connection or from a scanner (not shown). Image 1030 includes color palette 1035, which specifies the colors used to display image 1030.
Software 1040 is installed in computer system 1005. Software 1040 includes probability set 1045, update module 1050, compressor 1055, distance frame generator 1060, block locator 1065, and size estimator 1070. Probability set 1045 includes at least one model, and can possibly include multiple models, which can be used to predict the likelihood of the next pixel having a color that matches its left or upper neighbors. Update module 1050 is responsible for updating probability set 1045 based on the actual colors of the pixel and its left and upper neighbors. Update module 1050 can also select a different model from probability set 1045, if needed. (Probability set 1045 and update module 1050 will be discussed further with reference to
Compressor 1055 uses the size estimations calculated by size estimator 1070 to select the tessellation of the image (or the image frame) that will produce the smallest file size. Compressor 1055 then compresses each block in the tessellation with the smallest file size for the image (or image frame). This compression uses the probability values in probability set 1045.
The values shown for probabilities 1205-1, 1205-2, 1205-3, 1205-4, and 1205-5 are the initial probabilities for each color combination, and are updated as the image is compressed. For example, probabilities 1205-1 and 1205-2 define the probabilities that the current pixel has the same color as its left and upper neighbors given that the left and upper neighbors have the same color. For example, given that the left and upper neighbors have the same color, it is initially assumed that the current pixel is ten times as likely as not to have the same color as its left and upper neighbors. As the model is updated, this probability changes.
It is important to distinguish between the terms “probability set,” “probability model,” and “probability.” “Probability set” refers to the set of all probability models used in the compression. There can be one or more probability models in each probability set; typically, there will be only one probability set used to compress a single image file. “Probability model” refers to the set of probabilities (which can also be called probability values) used in a single probability model. Typically, each probability model will include probabilities for similar conditions. “Probability” refers to the individual probability of a given condition happening in a single probability model. So, in
The different probability models allow for additional history to be used in predicting the current pixel's color. In general, the behavior of the next pixel will be similar to the behavior of other pixels that have similar color matches between the current pixel and its left and upper neighbors. Thus, if the current pixel has the same color as its upper neighbor but a different color from its left neighbor, it is expected that the next pixel will be colored relatively similarly to other pixels whose previous pixel has the same color as its upper neighbor but a different color from its left neighbor.
Just as the colors of the left and upper neighbors select which probability to use within a probability model, the colors of the left and upper neighbors can be used to select the next probability model to use. For example, given that the left and upper neighbors of the current pixel are the same color and the current pixel has the same color, probability model 1205 can be used in determining the probability of the next pixel's color. Or, given that the left and upper neighbors of the current pixel have different colors and the current pixel has the same color as the upper neighbor, probability model 1220 can be used in determining the probability of the next pixel's color. By changing probability models, each probability model tends to become focused on one probability value, which improves compression. In the preferred embodiment, one model is used after one of the five probabilities occurs: that is, probability model 1205 is used after the current pixel has the same color as both its left and upper neighbors, probability model 1210 is used after the left and upper neighbors have the same color, but the current pixel has a different color, probability model 1215 is used after the left and upper neighbors have different colors, and the current pixel has the same color as its left neighbor, probability model 1220 is used after the left and upper neighbors have different colors, and the current pixel has the same color as its upper neighbor, and probability model 1225 is used after the left and upper neighbors have different colors, and the current pixel has a different color than either its left or upper neighbor.
Update module 1050 from
A person skilled in the art will recognize that, although the stripes were first located vertically and the boxes then formed horizontally, this is not the only way the boxes can be formed. For example, horizontal stripes can be formed first, and then boxes by analyzing the horizontal stripes. In addition, although there are advantages to rectangular image shapes, the boxes do not have to be rectangular in shape. Indeed, any shape can be used to define a box. The advantage of the rectangle is its simplistic definition: only a starting point and dimensions are required to define a rectangular box.
In the preferred embodiment, boxes are located by analyzing the image for stripes both horizontally and vertically. The size of the compressed file is estimated using both horizontal and vertical striping, and the striping that produces the smaller file size is selected. This comparison is discussed further below with reference to
The tessellations shown in images 1335 and 1340 may result in a smaller file size for the compressed image file. For example, if object 1330 includes only one color (ignore for the moment dot 1355), compressing box 1332 would include two colors, and compression according to the preferred embodiment of the invention would be necessary. On the other hand, boxes 1345-1 and 1345-2, or boxes 1350-1 and 1350-2, would each include only one color, and thus can be specified with only a location, size, and color.
Although when dot 1355 is ignored the two tessellations would result in compressed files of identical size, including dot 1355 can make a difference. The box that includes dot 1355 is compressed using the preferred embodiment of the invention, rather than just storing a location, size, and color. When dot 1355 is included, image 1335 has an advantage, since box 1345-2, which includes dot 1355, is smaller than box 1350-2 in image 1340, and hence box 1345-2 would compress to a smaller file size.
Where animated images are used, the preferred embodiment analyzes each frame four different ways. First, as discussed above, the size of each compressed frame is estimated using horizontal and vertical striping. Then the distance frame between the current frame and the previous frame of the animated image is calculated, and size estimations are calculated using horizontal and vertical striping on the distance frame.
The encoding performed at the applicable one of steps 1510, 1515, 1520, 1525, or 1530 is performed using a range encoder. The range encoder is a variation of an arithmetic coder: the difference between an arithmetic coder and a range coder are primarily technical in nature and the distinction need not be explained here. Arithmetic coding operates by assigning each possible symbol a range of probability values between 0% and 100%. Initially, the arithmetic coding covers the entire range from 0% to 100%. Then, as an individual symbol is encountered, the range is narrowed to include only the probabilities covered by that individual symbol. The process is then repeated, applied to the sub-range established by the previous symbol.
An example can help to clarify how the compression works, using a range coder with probability already known: i.e., a static model. Consider the message “DCDACBDCDB.” The letter “A” occurs once, for a probability of 10%. Similarly, the letters “B,” “C,” and “D” have probabilities 20%, 30%, and 40%, respectively. The arithmetic coder can assign to the letter “A” all values between 0.0 (0%) and 0.1 (10%). Similarly, the letter “B” can be assigned all values between 0.1 and 0.3, the letter “C” values between 0.3 and 0.6, and the letter “D” values between 0.6 and 1.0. (The border between ranges for adjacent symbols can be dealt with a technical fix: for example, each range is defined to be exclusive of its upper limit, and so the value 0.1 is assigned only to the letter “B.” A corollary of this definition is that the value 1.0 is excluded. A person skilled in the art will also recognize other ways this problem can be addressed.)
When the range encoder encounters the first letter (“D”), it narrows the range of acceptable encodings from 0.0 through 1.0 to 0.6 through 1.0 (since the letter “D” is assigned the range 0.6 to 1.0). Since the second letter is “C,” the range is further narrowed to 0.72 through 0.84. This range is calculated by multiplying the range for the new symbol (“C”) by the size of the range calculated so far (0.4, which gives the relative range of 0.12 through 0.24), and adding the resulting values to the low end of the previous range (resulting in 0.72 through 0.84). When the next symbol (“D”) is encountered, the range is narrowed to 0.792 through 0.84. Table 1 shows the range of acceptable encodings after each symbol in the message is encountered.
After the entire message is processed, the final range produced is 0.7938134784 though 0.7938162432. By using the single number 0.7938134784, the entire message is represented.
Decoding is accomplished by reversing the process. Again, the probabilities of the symbols in the message are known in advance. Then, the number is examined. Since it falls between 0.6 and 1.0, the first character of the message is “D.” The low value for the range of the determined character (0.6) is then subtracted from the encoded value, resulting in the value 0.1938134784. This value is then divided by the size of the range for the determined character (0.4), which produces 0.484533696. Since the new value falls between 0.3 and 0.6, the next character of the message is “C.” The low value for the range for the character “C” (0.3) can be subtracted, resulting in 0.184533696, and this can be divided by the size of the range for the character “C” (0.3), which produces 0.61511232. This process can be repeated, until all the characters of the message have been identified. Table 2 shows the complete message as it is decoded.
The reader may wonder how this compresses the message, since 10 characters were needed to represent the encoding. This is explained by the fact that there are very few characters in the message. A longer message would show that the encoded message is shorter than the original message.
The above example shows how a message can be encoded using static probability values. As pointed out, it was assumed that the probabilities of the individual symbols in the message were known in advance.
When dynamic probability values are used in the present invention enabling single pass compression, this assumption can be discarded. Some initial probability values are assigned to each symbol. One possibility is that each symbol is equally likely. In the preferred embodiment of the invention, certain symbols (symbols that match either their left or upper neighbors) are considered more likely than others. Then, as symbols are encountered, the probability values for the symbols are dynamically updated to reflect the changing probabilities.
For example, consider again the message “DCDACBDCDB” above. Initially, each of the four symbols “A,” “B,” “C,” and “D” can be assigned the same probability of 25%. This can be accomplished in many ways: for example, it can be preliminarily assumed that each symbol was encountered once for purposes of defining the initial probabilities. Then, as the symbols are encountered, the counts for the symbols can be updated. So, after the first symbol (“D”) is encountered, its probability value can be updated to 40% (2 out of 5), with each of the other symbols reduced to 20% (1 out of 5). After the next symbol (“C”) is encountered, the probability values for symbols “A” and “B” reduces to 16.67% (1 out of 6 for each), and the probability values for symbols “C” and “D” are changed to 33.33% (2 out of 6 for each). And so on.
Using dynamic probability values improves the speed of the encoding technique. To compute the static probability values requires either selecting random probability values that may have no bearing on the actual message, or scanning the message to determine the probability values of the individual symbols in the message. Selecting random probability values can result in poor encoding; scanning the message requires performing two passes over the message (one to determine the probability values, and one to encode the message). With dynamic probability values, both disadvantages are avoided. The probability values become accurate for the message, but only one pass is needed over the message (both to encode the message and to update the dynamic probability values).
If the image is an animated image, then frame information 1715 can be provided. Frame information 1715 specifies the type of frame (for example, the frame can be completely redrawn without reference to the prior frame, or the frame can be a distance frame, as described above) and the information about the frame. The information about the frame can include one or more blocks, as described above. Preliminary information need not be resent until the next image. However, a person skilled in the art will recognize that some preliminary information (for example, a new color palette) can be sent, if desired.
Note that in nowhere in
Regarding step 1830, as discussed above with reference to
The decompressor is able to decompress compressed image file 1075 without reading the probability models from compressed image file 1075 because the decompressor is able to recreate the probability models on the fly. Like the compressor, the decompressor starts with initial probability models, the same as shown in
A person skilled in the art will recognize that the method and apparatus for compression described herein provides for lossless compression. That is, the image file is compressed with no loss of information. When compressed image file 1075 is decompressed, the resulting file contains the same information as was in image file 1030, before the compression occurred.
Auto-notification module 2025 allows for auto-notification of updated rich media files to users. If user profile 2010 indicates that a user wants to automatically be sent an updated rich media file when one is available, auto-notification module 120 stores this information (shown by dashed arrow 2022). Then, when the appropriate rich media file is updated (shown by dashed arrow 2023), auto-notification module automatically sends the latest version of the rich media file to the user.
Transaction log 2030 stores information about every transaction occurring in database 2005. For example, transaction log 2030 stores information about each rich media file retrieved, by which user, and so on. Thus, when one of the users requests a rich media file, this transaction is logged, as shown by dashed line 2035. Or, when auto-notification module 2025 sends out a new version of a rich media file to a user, this transaction is logged, as shown by dashed line 2040. Or when a client provides information to allow the assembly of a new rich media file, this transaction is logged. A person skilled in the art will also recognize other transactions in the database that can be logged.
There are many variations on the concept of the rich media file. Aside from the ability to provide users with pre-prepared data files with a built-in viewer, the data formatted as desired by the client, rich media files can be prepared by using something akin to a “mail merge” technique. To accomplish this, a template is prepared for the rich media file. The actual content (or parts of it) are not directly included, but only tagged by assigning names to the text image and other objects that will contain the merged data. Information can then be drawn from a database using the tags to place the information in the corresponding object in the rich media file. When the rich media file is to be assembled, the merged information is collected, and the rich media file is assembled as described above.
In the preferred embodiment, the intermediate file format uses extensible markup language (XML) tags to store the client's collected information.
In another variation, the information of the rich media file can be streamed to the user. In the preferred embodiment, this variation is the most common delivery mechanism for rich media file. Codes are placed in a hypertext markup language (HTML) e-mail or web page where the client wishes the user to view the streamed rich media file. When the user opens the e-mail or page, the rich media file is streamed. In the preferred embodiment, the rich media file is streamed one page at a time after first streaming the embedded viewer. Thus, the first page is streamed from the remote server and is displayed while the next page is streamed in. Then the third page is streamed in, and so on. This optimizes use of the user's bandwidth: the user waits only long enough for the first page to load. Upon the first page loading, the remaining pages are then streamed.
Regarding the assembly of the information for the rich media file, the preferred embodiment employs a software package to assemble the information. The client positions images on the page as desired, adds text and links, selects the options, and so on. But this is not the only way to assemble the information. An alternative embodiment enables the client to use his preferred editing package, such as a word processor or other software. Then, when the information is properly assembled and formatted, a printer driver is used to complete the assembly of the information. The printer driver captures the contents and position of the information as if it was being printed to a printer, and translates that data into the intermediate file format used to design the rich media file. If the information spans multiple pages, the printer driver automatically adds links between the pages, saving the client some time (since no manual page linking need be done). The printer driver can capture an image placed in the background of the document for similar background treatment in the rich media file. The printer driver can also capture text and place the text in text boxes, allowing the client to go back and edit the information in the intermediate file format, rather than having to return to the original document from which the information was captured. A client may also print the entire information and images contained in the original document to the background of the intermediate file.
Rich media files are also capable of supporting timed animation. In timed animations, events happen at defined times following prior events. For example, in a presentation, the bullet point text or image objects can be set so that each bullet point displays five seconds after the previous bullet point displayed. Using timed animations gives the client additional flexibility in structuring the flow of the information in the rich media file and more rich animations in the rich media file by allowing the movement or actions of objects.
Enabling Search Results with Screen Snapshots
New users to the Internet almost double every other month. This fact gives rise to an enormous need to offer these less experienced users an easier way to use and search the Internet. The company site will be simple in design. No tricky animation or graphics will be needed, as we are interested in making the user's experience faster, easier and less confusing.
Though the site and related images seem similar to other sites, the internal technology is completely different. The company will have the worlds largest on line database, which will be custom developed to house both images of varying sizes as well as text descriptions of each company, site and Web page listing. These listings will then be group and indexed based on associated words, categories and listing descriptions. This database will be made up of the information used by ALL other major search engines as well as screen shots, keyword and page descriptions and the URL keyword information of each page of the site. This additional information found in the company site goes far beyond the competition listings consisting of Metatags from the Home page and 1 level down, and keyword listings only from the first level. The company site will categorize, keyword list and URL list ALL pages within each Web site.
As a part of upgrading a Web site listing, the site owner will be able to provide an image other than the FREE screen shot of their pages. Additionally, they will be able to provide optional listing descriptions and/or keyword lists of their site, which the user may opt to use rather than the standard “spider” provided information.
The Search Results:
The results of a search will be returned in one of three formats.
1) All images. Listings, which match or are similar to the users search criteria, will be shown in the form of images only. The images will be screen shots of each site, or 2) the default will be a combination of both text and screen shot images, or 3) text only, identical to all other major search engines. This capability makes searching much faster and easier by using pictures rather than words. Furthermore, there will be less of a need to surf to sites that are not what the user was looking for.
There are additional features that will improve the user search. These additional searches are described in more detail in further sections. Features such as Information and rich media files, e-mail Fax Forwarding, free e-mail, user services and other options will also be available. These services are designed to either directly generate revenue, or increase regular traffic to the site.
Additional Front Line Product & Service Details:
1) Where to Start: The most important first step of the development of the company is to quickly establish a database of URLs that is large enough to realistically be used by the consumer. This will be accomplished by outsourcing and subscribing to the services of the industry leader of search engine database information. The company provides the search engine index data to Yahoo!, Snap and AOL Search as well as many other major search sites. This allows the company to focus its efforts on the development of our own supplement data, while having the ability to roll out our services much more quickly.
In order to establish the database quickly, a “robot” or “spider” program will surf the Web, collect, analyze and store the desired information. Among other technical functions, the robot will do the following:
A) Surf the Web to find Web sites, Metatags, content and keywords, etc. It will also collect e-mail addresses from these pages in order to send invitations to site owners asking them to edit their text listing, keywords & categories. The robot will be programmed to get the number of pages at the site, and page titles to be included in the keyword listing.
B) Free listings will consist of text obtained from the companies' Web sites, as well as an image composed of a screen shot of each page. The robot will take a screen shot, compose a pre-determined image dimension, file size, resolution and file type. This information will be automatically saved to the search engine database for each FREE listing.
C) The system will track the text listings content and group and categorize them by their text and keywords, all with out the need for human intervention.
D) While this is occurring, the design, programming and development of the other products/services will commence. As the core products and services are coming on line the database will continually increase and become more effective.
Other data collection functions performed by the “robot”:
1) Collect e-mail addresses found on each page
2) Obtain the number of pages at each site
3) Obtain all page titles to be included in keyword groups.
4) Robot browser to take 4 versions of a screen shot, each with a pre-determined image dimension, file size, resolution, color format, and file type.
2) Special Search & Result Capabilities: Along with the many other unique and proprietary features being offered, additional search and search result capabilities will be introduced to the public. These new options allow the user to effectively search and obtain results in seven different ways:
4) Key Technology Differences of the Search Engine:
A) 3 Terabytes will be the current leader and the Largest Online Database!
B) Search engine has three viewable options: Text, Text & Screen Shot of the Site, and Web Site Images only.
C) Initial site address searches are found using outside search engine hosts, allowing quicker access to most often used key word sites, while our Spiders build a unique database of Web Sites and screen shots.
D) Other “Image” search engine applications being developed (Image Surfer) are only looking for pictures of actual items (People, places, things.) and not Images of the Web Sites.
E) Search results can show sites accepting Secure Credit Card Purchasing or offering rich media files.
F) “Smart Assistant” helps with more specialized searches by suggesting sub-keyword recommendations.
G) Unique Search Spider creates database not only from IP's found but also through Reverse Lookup. Allowing for a more extensive database of Web Sites.
5) Key Safeguards and Redundancies:
A) Custom web browser used for viewing Web Sites when creating Images. Thus, less software or system crashes that would normally result with using the industry standard, bulky browsers.
B) 3 Terabytes Disk Arrays on line with a database of Site Images, while an identical back up system works on new Sites and Images. System switches daily or automatically if problem arises with the Disk Array on line.
C) Generator power supply in case of power outages, locally.
D) Sealed room with controlled environment to lesson wear and tear on the system.
E) Multi dedicated computers with redundant units for both Spider searches and Public search requests.
F) Off site duplicated database systems in case of failure of Internet at home location.
G) Custom spider software, allowing resolution of reverse lookup of IP's, and multi or broken thread handling.
H) Unique, Custom Merger and Transaction handlers to test IP's and internal changes prior to being made available to public viewers.
I) Internal online and printed operating manuals for quick start training of new or replacement employees.
J) Custom robot browser allows faster loads of each site page over traditional browsers.
K) Custom robot browser able to take higher resolution image of screen shot, in smaller file size.
6) Defining Search Options:
A) Web Site Owner Defined Keywords: Upon purchasing an image listing upgrade, a business customer will complete an on-line form. This form will give them the option of providing the company with keywords they would use to describe themselves. The user will then have the option to search on those keywords only, rather than through normal “robot” provided titles.
B) User Services Profile: Secure Credit Card Purchasing users register and provide detailed profile information about themselves. The user then has the option to allow the search engine to use their profile in its search function. I.e. being a single woman, with 1 child, renting, rather then owning her home, etc. could return a better or different search result.
C) Combination: A combination of the above A and B search options will provide the user with an additional means of finding the information they seek.
7) Detailed Statistics Tracking & Reporting:
Systems and technology enabling management as well as business customers the ability to track and report on all aspects of user traffic will be utilized. Links from image listings, banner ads, purchases and all other features used, will be collected for statistical analysis. One example of this benefit is the fact that these statistics will allow sales calls to companies with FREE image listings, giving both the company Sales Rep and the prospective customer facts about the effectiveness of their listing, thus creating additional selling opportunities.
Not only will the statistical data allow for numerous selling opportunities, it will also provide management key information regarding the usage of our products and services. Access to reports regarding viability and usage of the products/services help in identifying other niche opportunities and provide timely, traceable results of changes or enhancements. Tracking and housing historical data on all facets of our system is identified as a key priority.
Finally, our visual technology lends itself to perfect strategic partnerships with the likes of WebTV, AOL and other user access services targeted to the beginner or novice Internet user.
8) “Real-Time” Assistance:
As apart of User Services, users have access to receiving search help. User's may receive assistance “real-time” using a FAQ (frequently asked questions) section, the “Search Assistant” option that drills down search result categories, contact an e-mail Help Desk, receive on-line Chat guidance, or speak directly with one of our customer service agents via Telephone. On-line Chat and Telephone help will require users to register for User Services.
9) Back End:
The following systems are designed to handle the core requirements of searching, parsing, extracting, storing, and cataloging the web. Their primary purpose is to find all valid web sites and produce a graphical snapshot of the sites' “Home” and other Web pages. In addition, these processes will also be capable of collecting and processing meta-tags, keywords, description, and text of the same pages in the future.
This processes main function is to coordinate Resolver activity to the URL data table. It determines what URLs in the URL data table need to be resolved; when a request to resolve is received from a Resolver process, the Scheduler shall give the requesting Resolver the URL in most need to be resolved.
In addition to coordinating the Resolvers, this process has the ability to seed the URL data table with a list of URL's supplied through an administrator interface.
When this process is not seeding the URL data table and it is not scanning for old URL's, it will poll all raw TCP/IP addresses for sites that do not have any detected links to it. This functionality shall have the ability to be enabled or disabled and has a low priority. Once a web page is found in this manner, a reverse lookup is performed on the IP and this URL will then be added to the URL data table.
The URL resolve need is based on the following criteria, in the order specified.
1. Unresolved seed URL's
2. URL's older then a predefined age.
3. Unresolved non-seed URL's
Feeding imager process finding URL's queue all into list & pass to imager.
This process shall run on multiple machines at the same time. Its job is to get an address from the URL database that is currently not resolved and resolves it. This is essentially a multi-threaded Internet spider/robot. This program may run on multiple machines if the need arises. The resolution process can parse meta-tags on a page, place the tags into the key word data tables, and then queue a request to the imager process. If an error occurs stating that the page no longer exists, the URL in error shall be added to the tile Sweeper to later clean up. NOTE: The Imager process will only be queued to if a URL is a valid page.
Custom Merger Process
The merger process handles the requesting and merging of the external search data (Inktomi) with the custom image Search results. This merged information is what shall be returned to the user. The Company's Web Designers have access to tile information from this process via CGI utilities.
Transaction Handler Process
All writes and modification that are performed on any of the Data Tables shall be funneled through this process, which shall be run on the disk servers. Its primary function is to ensure data table integrity and log each and every transaction. By logging each transaction, it is possible to reconstruct a data table backup from a known past point to current. This feature allows an administrator to swap the data tables (through the Administrator Utilities) used by the web serving clients and the data tables being updated by the Resolver process. (The Transaction handler process manages switching back and forth from on-line database.)
The Sweeper Process is responsible for the removal of old, incorrect or inactive URLs from the URL data table and the Key data tables. It receives all of its Instructions via the sweeper queue from the Resolver and Scheduler processes. This process is a low priority process and can be configured to run only during times of low access.
This process interfaces to a commercially available or custom developed HTML GUI web browser. The process requests the browser to download a requested URL, then when complete, it takes a screen shot image of the web page. The image is stored as a file and the URL is modified in the data table to reference this image. The initial push for image collection will incorporate a commercially available browser as a streamlined custom browser is developed. The custom browser will not have the “user” features associated with the commercial browser, thus have less options and code to cause crashes, etc.
Text Search Entire Web
This component will be added to the Resolver task to handle extracting key words from the actual text from each web page processed. After time, this process can eventually eliminate the need for an external search engine and database (Inktomi).
Due to the vast amount of data necessary to process and store, a standard commercially available database does not have the ability to reliably save and retrieve information under a high system load. In addition the overhead of a standard database on potentially billions of records can be extreme in both space and time. To handle this data, streamlined data files and database application, software & hardware is being designed to efficiently handle this load and reliability issues.
URL Data Table
Tracks unique URL's in database.
A binary, fixed size record oriented file that contains one record per unique URL. In addition to this file, two other sibling tiles exist that index this tile by URL and page age. Design includes utilities to handle creating and maintaining sibling index files.
Key Word Data Table
Joins each keyword file together from a search.
There shall be one Key Word data file per found key word. This file shall contain one entry per URL found to contain the key word. This file shall be sorted (index) by page age.
Category Data Table
The category data table is a variable sized record oriented tile that contains administrator defined categories and associated key words.
Client Data File
The client data file is a variable size record oriented file that contains client profile information and client defined keys for the client's Web site.
Image Data Store
This is a combination of index files and individual image files and is used to hold and organize a large volume of images.
Web Based Administrator Utility
The Administrator Utility is a collection of reports and utilities used to analyze hit and search statistics, handle data table maintenance, and analyze the collection of systems for general health and well-being.
The following is a list of functions that is supported by this utility.
1) Client statistics
2) Hit Statistics
3) Search statistics
b) Data Table Utilities
3) Swap Data Tables
c) Process Utilities-maintaining function
2) Start & restart multiple processes
d) Category Definition Utilities
1) Define with key words associated
4) Modify key words associated
e) Client Utilities
1) Add Client
2) Remove Client
3) Modify Client
f) System Health Screen
Web Based Client Utility
Gives the client the ability to Modify and/or view their profile and URL custom key words. This is a collection of CGI utilities.
Web Based Client Sign-up Utility
Image upgrade (e-mail possible-browser preferable.)
Gives a new client the ability to sign up for services. This is a collection of CGI utilities.
The initial solution incorporates 6 Terabytes of Online Storage, which is scalable. It is anticipated that this storage will be split into 3TB sections. This will enable 3TB to be used for Web Read Only access and 3TB to be used for the spider robot updates.
There are several “completely separate” ventures that will be deployed later. Some or all of these separate ventures will be marketed heavily, capture additional market share, generate profitable income, as well as allow for a less obvious way to push users to the company. Of the Cross-Market Ventures you will see, there are only a distinct few that require immediate deployment and roll out after the above products/services. These support ventures include:
Searchable Classified Newspaper Advertisements: National Newspaper Classified listings that are searchable. The service would also allow users to request key word notifications, providing them e-mail announcements when ads contain their interested items. The service would allow searches by state, region and national newspapers.
Magazine/Newspaper Listing and Purchasing Site: The user could search based on categories, names and/or industries, and the publications could easily market themselves at the site.
Secure Credit Card Purchasing & User Services:
User Services registration is designed to register users to receive an ID number to simplify requesting rich media files, allow on-line purchasing without passing any credit card information over the Web, and other unique benefits and services.
By entering their ID number and password there will no longer be a need to input all of their information every time a rich media file is requested. This will make requesting and receiving a rich media file even faster and easier.
The User Services registration process will facilitate a collection of specific demographic and other information about the user like Age, Income level, Employment Industry, etc. This valuable information will then be used for target marketing other products and services, unrelated to the company site, as well as search integration to better target results and for banner ad placement directed to the specific users' profile, such as likes, dislikes, and success tracking.
To register for on-line purchasing without passing any credit card information over the Web, a user elects to have the Secure Credit Card Purchasing option included with their User Services Benefits. Users mail, call or fax their credit card information for archiving in a secure “off-line” database located at the company site. In this way, the user's credit card information is not transmitted over the Internet. Alternatively, if users are comfortable with Internet security, users can enter information at secure servers while registering online.
Once registered with User Services, a user can use his/her profile in their searches. Integrating user profiles into search may improve user searches or better narrow the results. User profiles will also allow banner ad targeting and/or placement that is directed to specific user profiles.
It is important to note that both audience size and statistical profile information determine most advertising rates. Increasing User Services registrants and gathering user profiles becomes key to maximizing value and marketability to selling advertising space to our corporate customers. Supply and demand dictates that the more valuable our end user is to our customers, the more our user will be targeted, and the more the company can charge for marketing to them.
The company's strategy regarding e-commerce is to obtain a small piece of a large number of purchases on the Internet, rather than to compete as a “seller” of goods and services to our users. The Secure Credit Card Purchasing feature allows a user to purchase goods or services from anywhere on the Internet without having to transfer credit card information over the Internet. The user would include, or later add their credit card information in their User Services registration once, for secure archiving. Information can be provided via telephone, fax or secure servers online. When purchasing on the Web, the user would select Secure Credit Card Purchasing rather than MasterCard or Visa to pay for their purchase, and only enter their ID number and password. This would route the businesses order system to link out to the company site with the customers order amount, and our credit card merchant account would authorize the users credit card found in the User Services off-line database record. Upon authorization, codes would be returned back to the business, and the user's order would be confirmed. Finally, the source site would send that business a check for orders made with Secure Credit Card Purchasing accounts. Enticements for businesses to sign up will include a listing in our Secure Credit Card Purchasing business “Yellow Pages” of companies offering the Secure Credit Card Purchasing option, as well as discounted company site listings and/or banner advertising.
Secure Credit Card Purchasing:
1) User selects Secure Credit Card Purchasing rather than MasterCard or Visa to pay for purchase.
2) Secure link is made to Secure Credit Card Purchasing secure servers via a new window.
3) Users are prompted to input their Secure Credit Card Purchasing ID and password.
4) System to collect sale amount, user ID/password and business ID for authentication.
5) Via the secure link, system to authenticate user and business.
6) Off-line system to check database for authenticated users credit card information.
7) Credit card authorized via a standard, bank merchant account system/software by off-line database system.
8) Upon bank approval of credit card and amount, the system to accept and database authorization code from bank in a transaction table along with users ID, dollar amount and businesses ID.
9) Transaction table systems to assign new Secure Credit Card, proprietary authorization codes to the transaction and include it with the other detail of the transaction.
10) New Secure Credit Card proprietary authorization codes in the off-line database to be delivered to the on-line system connected via the secure link for that transaction.
11) Authorization code to be delivered to database system provided to the merchant by Secure Credit Card Purchasing company, or to connect directly into their existing bank card processing system and attach the code for that transaction.
12) Merchant's system approves method of payment and authorizes purchase from user exactly as other systems do now.
13) Secure Credit Card Purchasing company accounting to send periodic checks to Merchant.
Additional User Options in using Secure Credit Card Purchasing:
Option 1: More secure feature, which at the time the order is approved by the bank, the system sends e-mail receipt to user with transaction detail. (Inserted at step 8) Upon delivering e-mail, transaction completes as normal.
Option 2: Feature to be used with Option 1. System not to complete transaction until receipt of users electronic approval, by replying to the e-mail sent by the system.
Advantages of Secure Credit Card Purchasing:
1) Opens a much larger universe of users now willing to buy on the Internet, thus giving our business clients a direct avenue to that consumer segment.
2) Smaller e-businesses could accept orders from consumers that want to pay with a credit card.
3) No need for extensive e-commerce knowledge, special technical staff for programming, secure servers and extensive capital.
4) User gets the benefits of purchasing on the Internet without the risk of credit card or information fraud.
5) Faster purchasing due to less information to input.
Additional opportunities capitalizing on User Services registrants consist of engaging in contractual agreements with corporations conducting, Import/Export, Major Retail, Wholesaling, Software Manufacturing, etc., in order to offer our customers GREAT deals on overstocked, out of date, or slow moving products. Announcements via e-mail describing these and other offers would be sent to our User Services registrants. These announcements would be similar to the “Home Shopping Network”, in that only a specific quantity of each product would be available at the special prices, and only for a specified amount of time. Offering products with limited quantity and time constraints facilitate a quick decision by the consumer, thus impulse buying. Subsequently, the company would be able to move product volume for our contracted partners, provide savings benefits to our users, without a need to stock merchandise, carry overhead and ship product. This service would serve as an intermediary between the product companies and our User Services customers, while getting compensated on a percentage of revenues generated. Finally, the excitement and incentives of this service will create user referrals, which will increase the overall user base dramatically.
Having illustrated and described the principles of our invention in an embodiment thereof, it should be readily apparent to those skilled in the art that the invention can be modified in arrangement and detail without departing from such principles. We claim all modifications coming within the spirit and scope of the accompanying claims.