Method for ciphering a compressed audio or video stream preserving the coding syntax

Nicolai, Jean

Patent Application Summary

U.S. patent application number 10/892889 was filed with the patent office on 2005-01-20 for method for ciphering a compressed audio or video stream preserving the coding syntax. This patent application is currently assigned to STMicroelectronics S.A.. Invention is credited to Nicolai, Jean.

Application Number20050013438 10/892889
Document ID /
Family ID33462532
Filed Date2005-01-20

United States Patent Application 20050013438
Kind Code A1
Nicolai, Jean January 20, 2005

Method for ciphering a compressed audio or video stream preserving the coding syntax

Abstract

A method ciphers a standardized stream of data coded by a table of codewords of different lengths, wherein at least one part of the bits is ciphered which are such that, after randomly changing their value(s) and after replacing bit by bit in the codeword to be ciphered the non-ciphered bits with the ciphered bits, a codeword of the table of codewords is obtained.


Inventors: Nicolai, Jean; (Chateauneuf Le Rouge, FR)
Correspondence Address:
    SEED INTELLECTUAL PROPERTY LAW GROUP PLLC
    701 FIFTH AVENUE, SUITE 6300
    SEATTLE
    WA
    98104-7092
    US
Assignee: STMicroelectronics S.A.
Montrouge
FR
92120

Family ID: 33462532
Appl. No.: 10/892889
Filed: July 15, 2004

Current U.S. Class: 380/268 ; 348/E7.056
Current CPC Class: H04N 19/61 20141101; H04N 7/1675 20130101; H04N 21/2347 20130101
Class at Publication: 380/268
International Class: H04L 009/00

Foreign Application Data

Date Code Application Number
Jul 16, 2003 FR 03/08642

Claims



1. A method for ciphering a standardized stream of input codewords coded by a table of codewords of different numbers of bits having respective values, the method comprising: ciphering at least one part of the bits of a selected one of the input codewords by randomly changing the value(s) of the at least one part of the bits to obtain one or more ciphered bits; and obtaining another codeword of the codeword table by replacing the at least one part of the bits in the selected input codeword with the one or more ciphered bits.

2. The method according to claim 1 determining which of the bits of the selected input codeword can be ciphered by randomly changing their values and result in another codeword of the codeword table, wherein all the bits that are so determined are ciphered by randomly changing their values to obtain the one or more ciphered bits and replaced bit by bit in the selected input codewordwith the one or more ciphered bits.

3. The method according to claim 1 wherein codewords of a group of the codewords of the table having an identical length are swapped.

4. The method according to claim 1 wherein the codewords are not signed.

5. The method according to claim 1 further comprising adding to the table an index for identifying each codeword of the table and adding to the table a parameter defining, for each codeword of the table, the number of bits to be ciphered.

6. The method according to claim 1 further comprising adding to the table an index for identifying each codeword of the table and adding to the table a parameter defining, for each codeword of the table, a number and a position, in the codeword, of one or more bits to be ciphered.

7. The method according to claim 1 further comprising: determining the number and position of one or more bits to be ciphered in each input codeword, using the table; extracting the one or more bits to be ciphered from the input codeword and placing the one or more bits into a buffer by concatenating in this buffer the one or more bits to be ciphered that have been extracted from the input codewords of the stream of input codewords; wherein the ciphering step includes ciphering,--when the buffer is full, the bits present in the buffer to obtain the one or more ciphered bits for each input codeword and the obtaining step includes putting the one or more ciphered bits for each input codeword into the positions determined in the determining step.

8. The method according to claim 7 wherein the ciphering steps includes using one of a group of cipher blocks consisting of 64-bit, 128-bit, 192-bit, and 256-bit cipher blocks, and said buffer has a dimension that corresponds to that of the cipher block, and is filled with bits to be ciphered.

9. The method according to claim 1 wherein the input codewords are MPEG-format compressed video data, and wherein the ciphering step includes ciphering bit by bitonly one part of the compressed video data, with an algorithm for ciphering by block of a predetermined number of bits; the method further comprising: counting the bits ciphered during the ciphering of the compressed video data; and inserting a synchronization marker into the compressed video data after the ciphered bits counted has exceeded said predetermined number of bits.

10. The method according to claim 9, further comprising counting a total number of bits of the data stream that have elapsed since a previous synchronization marker; and inserting a new synchronization marker only after the total number of elapsed bits counted has exceeded a predetermined threshold that is higher than said predetermined number.

11. The method according to claim 1 wherein the input codewords are data (V) of motion vectors of P and B-type images created according to the MPEG4 standard.

12. The method according to claim 1 wherein the input codewords are texture data of I, P and/or B-type images.

13. A computer-readable medium, on which a compressed stream of ciphered data are stored, the ciphered data enabling a computer device to decipher the ciphered data in response to reading the computer-readable medium, the ciphered data by obtained by a method for ciphering a standardized stream of input codewords coded by a table of codewords of different numbers of bits having respective values, the method comprising: ciphering at least one part of the bits of a selected one of the input codewords by randomly changing the value(s) of the at least one part of the bits to obtain one or more ciphered bits; and obtaining another codeword of the codeword table by replacing the at least one part of the bits in the selected input codeword with the one or more ciphered bits.

14. An encoder of compressed and formatted audio or video data that includes a standardized stream of input codewords of different numbers of bits having respective values, the encoder comprising: a table of codewords of different lengths, the table comprising, for each codeword, an index and a parameter defining bits of the codeword to be ciphered; means for extracting selected data bits from the input codewords based on the parameter of corresponding codewords of the table; a buffer provided for temporarily receiving the selected data bits of the input codewords, block cipher means for ciphering the bits stored in the buffer by randomly changing the values of the bits stored in the buffer to obtain ciphered bits; and means for activating the block cipher means, to cause the cipher means to cipher the bits stored in the buffer when the buffer is full, for replacing the selected data bits in: the data stream with the ciphered bits to thereby obtain other codewords of the table, and for emptying the buffer.

15. The encoder according to claim 14 wherein the buffer has a size equal to the number of bits of a block of the block cipher means, or equal to a whole multiple of the number of bits of a block of the block cipher means.

16. A computer-readable medium, on which a program code is saved that enables a computer to cipher a compressed data stream of input codewords coded by a table of codewords of different numbers of bits having respective values, according to steps comprising: ciphering at least one part of the bits of a selected one of the input codewords by randomly changing the value(s) of the at least one part of the bits to obtain one or more ciphered bits; and obtaining another codeword of the codeword table by replacing the at least one part of the bits in the selected input codeword with the one or more ciphered bits.
Description



BACKGROUND OF THE INVENTION

[0001] 1. Field of the Invention

[0002] The present invention relates to a method for processing compressed data, and to apparatus and media for its implementation.

[0003] The technical field of the present invention is the manufacturing of audio and/or video data encoders.

[0004] The present invention relates more particularly to a method for selectively (partially) ciphering audio or video data by a block, block chaining, or stream cipher algorithm, the data being compressed and organized according to a standardized format, and comprising codewords of variable length.

[0005] 2. Description of the Related Art

[0006] Today, the secured distribution of video documents is limited to the broadcasting of "pay-as-you-go" cable or satellite television; the security is provided by "proprietary" cipher systems, which are defined, implemented and controlled by a single provider: the broadcaster.

[0007] The new standards of low-rate video, broadband Internet and wireless-network handheld terminals, of 3G telephone or personal assistant type, should soon enable the distribution of video documents: teleconferencing, multimedia messages, film trailers, live sporting events and video on demand, in particular.

[0008] Some security requirements are emerging which cannot be met by the current solutions. The requirements are as follows:

[0009] a--the syntax of the ciphered stream must remain as compliant as possible with the coding standard, in order to facilitate the transport by network; the method for processing data must provide transparency to the transcoding and to the changes in data rates, as well as transparency to the routers and servers for reasons of confidence; the method must enable random access and other video processing without deciphering the complete stream, and must enable the transport by protocols provided for standard video;

[0010] b--the compression efficiency must not be reduced as a result of the securement of the data by cipher;

[0011] c--the securement must be compatible with various tools provided for by the video data compression standards (MPEG4, H264), particularly the resistance to errors, for wireless transmission and the losses of IP (Internet Protocol) packets, as well as the multi-level coding, for heterogeneous bandwidth client terminals;

[0012] d--the security and backward masking level must be adapted to the application: robustness to video-specific attacks;

[0013] e--the required computing power must remain compatible with embedded terminals, for applications like the wireless streaming of multimedia documents for example.

[0014] According to the MPEG standard, a video sequence is made up of a series of groups of images, each image group comprising a series of images of type I (intrinsic), P (predicted) and B (bi-directional); each type-I image is split into macroblocks; each macroblock is converted into four luminance blocks and into two chrominance blocks, this conversion resulting in a first loss of information.

[0015] Each 64-pixel block is converted into a 64-coefficient table by a DCT ("discrete cosine transform"); this table is compressed by quantization and then ordered and coded ("zig-zag ordering" and "run-length coding") according to the number of zero-value coefficients encountered during a zig-zag scan of the table; the resulting compressed data are coded into words of variable length ("Huffman coding"); these transformations also result in a loss of information.

[0016] Various methods for ciphering a standardized video data stream--particularly an MPEG-standard stream--have been proposed in order to meet some of the aforementioned requirements.

[0017] When a codeword that is part of a table of codewords of different lengths is entirely ciphered, the result is generally a codeword which does not belong to this table ("non-compliant" word); consequently, a decoder that analyses the codewords bit by bit and makes decisions at each bit, will not be able to recognize the boundary of the ciphered codeword, will "get confused" and will no longer know which data field it is analyzing; this disadvantage results from the fact that the codewords are of variable length.

[0018] The document "A Fast Mpeg Video Encryption Algorithm", Changgui Shi et al, ACM Multimedia 98, describes a method for ciphering MPEG-compressed video data, by a secret key; the sign bits of the Huffman coefficients (AC and DC)--which are codewords of variable length--are "XORed" bit by bit with a key of determined length (i.e. combined bit by bit with the bits of the key by means of XOR logic gates, i.e. "exclusive OR" gates), and are respectively replaced--in the video data stream--with the bit value resulting from this operation; this document proposes using one or several long key(s); a 128-bit key is used as an example.

[0019] According to this document, only the sign bits of the codewords are ciphered, and only for the codewords that represent useful data (motion vectors and DCT coefficients representing the texture), which results in a compliant codeword. If the codewords representing something else were ciphered, like the number of coded blocks for example, even if compliant codewords were obtained after ciphering, the decoder would be lost.

[0020] This selective cipher method, which operates on a small part of the data stream, requires fewer computing resources than those required by the methods for fully ciphering the stream; on the other hand, the darkening of the ciphered images is relatively low.

[0021] According to the aforementioned Changgui Shi et. al document, sync points, which are added to the data stream, enable a decoder that has the key to know which position in the ciphered stream it must start using the deciphering key from again; these sync points are added at the start of each image group, at the start of each type-I image or at the start of a predetermined number of images.

[0022] According to schedule E to the ISO standard 14496-2, in a "video packet resynchronization" mode, a periodic synchronization marker can be created at the end of a macroblock when the number of bits since the previous marker is higher than a certain threshold; a video packet (part of the stream between two successive markers) therefore has a variable number of macroblocks.

[0023] When the data stream is partially ciphered with a block cipher algorithm, like the DES (64-bit block) and a fortiori the AES (128 bits) standards for example, the number of data bits to be ciphered inside this video packet can be lower than the number of bits of the cipher block, in particular when the packet contains the motion vectors associated with the P and B-type images; in this case, this packet will be transmitted without ciphering, and the darkening of the sequence will be reduced.

[0024] The U.S. Pat. No. 6,505,299-B1 (Zeng et. al) describes different methods for ciphering quantized (partially compressed) video data before their coding by Huffman tables, by RLE encoding, arithmetic coding or other entropy coding: a spatial frequency transform is applied to the image, which generates a map of transform coefficients; these coefficients are then ciphered, either by scrambling their sign bits, by scrambling their least significant bits, by mixing blocks of the map, or by mixing coefficients corresponding to a spatial frequency band of the map.

[0025] This document further proposes ciphering the motion vectors of the P and B-type images; this increases the darkening of the ciphered images.

[0026] A disadvantage of these cipher methods is that they reduce the efficiency of the data compression obtained by quantization; another disadvantage is that they require computing means that are more significant than those required for a cipher after Huffman coding or equivalent.

[0027] Furthermore, the patent application US-2002/0018565 (Luttrell et. al) proposed a method for selectively ciphering an MPEG4 data stream that preserves the coding syntax; according to this method, the indexes (of fixed length equal to n) of a table of 2.sup.n words of variable length are ciphered, and for each index of the table, the word (in plain text) corresponding to this index is replaced with the word (in plain text) corresponding to the ciphered index; this method does not enable the relation of the table in plain text between the length of a codeword and the frequency of occurrence of the corresponding symbol in a data stream to be kept; consequently, it reduces the data compression by coding using the ciphered table.

BRIEF SUMMARY OF THE INVENTION

[0028] An embodiment of the present invention proposes an improved method for ciphering a standardized stream of compressed data.

[0029] The method--at least in part --overcomes the disadvantages of the known methods for ciphering compressed audio and video data streams.

[0030] In the present application, the terms and expressions "coded word", "code word" and "codeword" are used indifferently to designate a word of a table of words of different lengths.

[0031] According to a first embodiment, the present invention proposes a method for ciphering codewords of a table of codewords that do not all have the same length, wherein, preferably for each codeword of the table, at least one part of the bits is ciphered--and preferably all the bits--which is/are such that, after randomly changing their value(s) and after replacing bit by bit in the codeword to be ciphered the non-ciphered bits with the ciphered bits, a second codeword of the codeword table is obtained; the length of the codeword is thus invariant during this cipher.

[0032] In another embodiment of a cipher method according to the present invention, the codewords of at least one group of several codewords (and preferably of all the groups of several codewords) of the table that have the same length are mixed (swapped).

[0033] According to a preferred embodiment of the present invention, an index for identifying each codeword in the table is added to the table of codewords of different lengths, as well as at least one parameter which defines, for each codeword in the table, the number--and possibly the position in the codeword--of the bit(s) to be ciphered.

[0034] To cipher a series of codewords of a data stream, the number and the position of the bits to be ciphered in the word are determined for each codeword, using this table; the bit(s) to be ciphered is/are extracted from the word and is/are placed in a buffer by concatenating in this buffer the bits to be ciphered that have been extracted from the codewords of the series of the codewords; if a block cipher algorithm is used (AES or DES for example), a buffer the dimension of which preferably corresponds to that of the cipher block is therefore filled with bits to be ciphered; when this buffer is full, the string of bits present in the buffer is ciphered and each of the ciphered bits is put back at the place it respectively occupied before ciphering in the corresponding codeword of the series of codewords; thus, after ciphering, a data stream complying with the compression standard is obtained.

[0035] To decipher a series of so-ciphered codewords, the opposite operations are carried out: the ciphered bits are extracted from each word of the stream and are placed in a buffer the dimension of which is that of the cipher block; when this buffer is full, the series of bits that it contains is deciphered, then each extracted, ciphered bit is replaced in the stream respectively with the deciphered bit that has the same position in the buffer; the buffer is then emptied before processing the following words in the same way.

[0036] According to another embodiment, the present invention proposes a computer-readable medium on which a program code is saved that implements the operations defined above, to enable the computer to cipher a stream of compressed data, or conversely to decipher a stream of compressed data ciphered according to the present invention.

[0037] The present invention enables streams of data coded with unsigned code words of variable length to be ciphered, while preserving the coding syntax of the stream.

[0038] In the case of tables of signed codewords, the present invention also enables a more complete data scrambling to be obtained (particularly images or sounds), compared to the methods that only cipher the sign bit.

[0039] The present invention applies in particular to methods using a 64-bit, 128-bit, 192-bit, or 256-bit block cipher algorithm to cipher one or more bit(s) of the motion vector data of P and B-type images according to the MPEG4 standard, and to selectively cipher bits of texture data of images, of blocks and/or macroblocks of images.

[0040] According to another embodiment, the present invention proposes an encoder (or a decoder) of formatted and compressed audio or video data, which comprises:

[0041] a table of codewords of different lengths, the table comprising, for each-word, an index and a parameter defining the bits of the word to be (de)ciphered,

[0042] a buffer provided for temporarily receiving the selected data bits with a view to their (de)ciphering,

[0043] block (de)cipher means capable of (de)ciphering the bits stored in the buffer,

[0044] means for activating the block (de)cipher means, to cause the (de)ciphering of the bits stored in the buffer when the buffer is full, to replace the bits selected in the data stream with the bits stored and (de)ciphered, and to empty the buffer,

[0045] the size of the buffer preferably being equal to the number of bits of a block of the block (de)cipher means (or equal to a whole multiple of this number).

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

[0046] Other features and advantages of the present invention are explained in the following description, that refers to the appended drawings and that shows without limitation preferred embodiments and examples of embodiments of the present invention.

[0047] FIGS. 1a and 1b represent a table used according to the present invention, which incorporates table B-12 of schedule B to the MPEG4 standard (ISO 14496-2) as well as a column of indexes respectively associated with each word, and a column of parameters indicating the number of cipherable bits of each word.

[0048] FIG. 2 is a diagram showing the cipher of a series of words of a data stream, using the table in FIGS. 1a and 1b.

[0049] FIG. 3 is a diagram showing the decipher of a series of words of a data stream ciphered according to the method shown in FIG. 2.

[0050] FIG. 4 is a computer system for implementing one embodiment of the present invention.

DETAILED DESCRIPTION OF THE INVENTION

[0051] According to one embodiment of the present invention, the method for ciphering an MPEG4 stream or other compressed stream using variable length codes (codewords), is such that the ciphered stream complies with the standard (MPEG4 or other), due to the fact that the ciphered codewords are valid codewords (compliant with the standard) coming from the same table of codes.

[0052] Therefore, all the bits of the codeword are ciphered that are such that, after randomly changing their value, the new codeword is still valid, i.e. it is still part of the same table; and preferably only bits of codewords representing useful data (motion vectors and DCT coefficients of texture) are ciphered.

[0053] The embodiment has several advantages compared to the cipher of sign bits only:

[0054] a more significant visual darkening is obtained;

[0055] the resistance of the ciphered stream to attacks is better, thanks to a greater number of ciphered bits;

[0056] as the number of modified bits is greater, the number of bits to be ciphered that are transferred into the buffer corresponding to the dimension of a block (128 in the case of the AES) of a block cipher algorithm, is reached after a lesser number of words; thus, two consecutive synchronization markers can be brought closer together, when a method for inserting markers is used in which a synchronization marker is only inserted into the compressed data stream after the number of ciphered bits has reached or exceeded the number of bits of the cipher block.

[0057] In this case, preferably, the total number of bits of the data stream that have elapsed since the previous synchronization marker is counted, and a new synchronization marker is only inserted after the total number of elapsed bits counted has exceeded a predetermined threshold (N), said threshold being higher than said number of bits of the cipher block.

[0058] For the MPEG4 format, the method according to one embodiment of the present invention applies to the following tables of codewords (Cf. IS014496-2 schedule B):

[0059] Table B-12: "VLC table for MVD";

[0060] Table B-15: "Differential DC additional codes";

[0061] Table B-16: "VLC Table for Intra Luminance and Chrominance TCOEF";

[0062] Table B-17: "VLC table for Inter Luminance and Chrominance TCOEF";

[0063] Table B-23: "RVLC table for TCOEF".

[0064] As the variable length codes are used in other compression systems such as the AAC audio compression, the method according to the present invention can be applied to the same.

[0065] According to a preferred embodiment, to scramble one of these tables of codewords having different lengths, at least one part of a non-zero positive whole number N of cipherable bits of a number M (M=2.sup.N) of codewords of identical length--forming a group of codewords--present in the table of codewords is ciphered, these M codewords only differing by the value (0 or 1) of their said cipherable bits; preferably, all the said N cipherable bits of the codewords of the group of M codewords in the table are ciphered.

[0066] When the method is applied to the tables B-12 or B16, the cipherable bits are grouped in the right-hand part of the codewords.

[0067] Thanks to the fact that the bits grouped in the left-hand part of the codewords are not ciphered, the decoding by sequential reading, from left to right and bit by bit, of a stream of concatenated ciphered codewords is made easier.

[0068] The following example concerns table B-12 of codewords for the coding of the motion vectors.

[0069] With reference to FIGS. 1a and 1b, table 1 comprises four columns 4, 3, 2, 5 respectively comprising:

[0070] values V, in this case motion vector difference values, such as V1 and V2;

[0071] codewords M respectively associated with the different values V to be coded, such as M1, M2, M3, M4, M33, M65;

[0072] indexes I ranging from 1 to 65, to respectively identify each word M of the table, such as I1, I2, I33, I65;

[0073] parameters NBC respectively associated with each word M of the table, such as NBC1, NBC2, NBC3, NBC33, to define the number of bits of the word in question the replacement of which with the complementary bit produces another word of table 1.

[0074] It can be seen on this Figure that most of the codewords M of at least eight bits comprise a number NBC of cipherable bits equal to two, three or four; in particular, in the group of the four codewords of thirteen bits, of which the word M33 is part, two bits of each word can be complemented (inverted).

[0075] As described above, the cipherable bits of this table are the bits grouped on the right of each codeword; if this is not the case, the table must further contain, for each codeword M, the position information of each cipherable bit of this word.

[0076] To cipher the series 10 (FIG. 2) of codewords M (M8, M17, M61, M33, etc.), the number NBC (equal to one) of cipherable bits of the 1st word M8 is read: in table 1; the one cipherable bit of the word M8 is transferred into a buffer 11; the operation is repeated for the following words (M17 . . . ) in the stream 10 to be ciphered, and the cipherable bits extracted from these words are gradually concatenated in the buffer 11, until it is full; at this moment, the bits of the buffer 11 are ciphered by presenting them, as well as a cipher key 13 enabling the buffer 11 to be ciphered into a buffer 14 of the same dimension, the bits of which are put back--bit by bit--in the stream of words, at the respective positions of the bits extracted from the stream 10, so as to form a ciphered stream 15.

[0077] The key 13 can comprise the same number of bits as the buffer 11; it is then presented, as well as the bits of the buffer 11, at the inputs of exclusive OR (XOR) gates 12; the outputs of these gates comprising the so-ciphered bits are placed in the output buffer 14 and put back bit by bit in the stream of words; alternatively, a key of a different length from that of the buffer 11 can be used to cipher the bits of this buffer.

[0078] To decipher the series 15 (FIG. 3) of ciphered codewords, the stream is analyzed from left to right; when a codeword is analyzed by an MPEG decoder, a decision is made at each bit; after reading the last non-ciphered bit of a ciphered word, the decoder determines the group of ciphered words of the table corresponding to the non-ciphered bits which have already been read and consequently determines the number of ciphered bits following the last bit "in plain text"; when, for example, the sequence of bits "in plain text" is "000010", reading table 1 makes it possible to determine that the ciphered word comprises two ciphered bits, which follow these non-ciphered bits.

[0079] The processing of these bits is then identical to that used for the cipher: the bits to be deciphered are concatenated in a buffer 16, until it is full; the content of the buffer can be applied bit by bit to the inputs of XOR gates 17 with a key 18 of the same dimension; the deciphered bits at the outputs of the gates are put back in the stream to be deciphered, through a buffer 19, to form a deciphered stream 20.

[0080] Although the above method is discussed above with regard to specific logic gates and buffers, those skilled in the art will recognize that the method may be implemented in a general purpose computer system. FIG. 4 and the following discussion provide a brief, general description of a suitable computing environment in which the invention may be implemented. Although not required, at least one embodiment of the invention can be implemented in the general context of computer-executable instructions, such as program application modules, objects, or macros being executed by a personal computer. Those skilled in the relevant art will appreciate that the invention can be practiced with other computing system configurations, including handheld devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like. The invention can be practiced in distributed computing environments where tasks or modules are performed by remote processing devices, which are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.

[0081] Referring to FIG. 4, a personal computer referred to herein as a computing system 110 includes a processor unit 112, a system memory 114 and a system bus 116 that couples various system components including the system memory 114 to the processing unit 112. The processing unit 112 may be any logical processing unit, such as one or more central processing units (CPUs), digital signal processors (DSPs), application-specific integrated circuits (ASIC), etc. Unless described otherwise, the construction and operation of the various blocks shown in FIG. 4 are of conventional design. As a result, such blocks need not be described in further detail herein, as they will be understood by those skilled in the relevant art.

[0082] The system bus 116 can employ any known bus structures or architectures, including a memory bus with memory controller, a peripheral bus, and/or a local bus. The system memory 114 includes read-only memory ("ROM") 118 and random access memory ("RAM") 120. A basic input/output system ("BIOS") 122, which can form part of the ROM 118, contains basic routines that help transfer information between elements within the computing system 110, such as during startup.

[0083] The computing system 110 also includes one or more spinning media memories such as a hard disk drive 124 for reading from and writing to a hard disk 125, and an optical disk drive 126 and a magnetic disk drive 128 for reading from and writing to removable optical disks 130 and magnetic disks 132, respectively. The optical disk 130 can be a CD-ROM, while the magnetic disk 132 can be a magnetic floppy disk or diskette. The hard disk drive 124, optical disk drive 126 and magnetic disk drive 128 communicate with the processing unit 112 via the bus 116. The hard disk drive 124, optical disk drive 126 and magnetic disk drive 128 may include interfaces or controllers coupled between such drives and the bus 116, as is known by those skilled in the relevant art, for example via an IDE (ie., Integrated Drive Electronics) interface. The drives 124, 126 and 128, and their associated computer-readable media, provide nonvolatile storage of computer-readable instructions, data structures, program modules and other data for the computing system 110. Although the depicted computing system 110 employs hard disk 125, optical disk 130 and magnetic disk 132, those skilled in the relevant art will appreciate that other types of spinning media memory computer-readable media may be employed, such as, digital video disks ("DVD"), Bernoulli cartridges, etc. Those skilled in the relevant art Will also appreciate that other types of computer-readable media that can store data accessible by a computer may be employed, for example, non-spinning media memories such as magnetic cassettes, flash memory cards, RAMs, ROMs, smart cards, etc.

[0084] Program modules can be stored in the system memory 114, such as an operating system 134, one or more application programs 136, other programs or modules 138, and program data 140. The system memory 114 also includes a browser 141 for permitting the computing system 110 to access and exchange data with sources such as websites of the Internet, corporate intranets, or other networks, as well as other server applications on server computers. The browser 141 is markup language based, such as hypertext markup language ("HTML"), and operate with markup languages that use syntactically delimited characters added to the data of a document to represent the structure of the document.

[0085] While shown in FIG. 4 as being stored in the system memory, the operating system 134, application programs 136, other program modules 138, program data 140 and browser 141 can be stored on the hard disk 125 of the hard disk drive 124, the optical disk 130 and the optical disk drive 126 and/or the magnetic disk 132 of the magnetic disk drive 128. A user can enter commands and information to the computing system 110 through input devices such as a keyboard 142 and a pointing device such as a mouse 144. Other input devices can include a microphone, joystick, game pad, scanner, etc. These and other input devices are connected to the processing unit 112 through an interface 146 such as a serial port interface that couples to the bus 116, although other interfaces such as a parallel port, a game port or a universal serial bus ("USB") can be used. A monitor 148 or other display devices may be coupled to the bus 116 via video interface 150, such as a video adapter. The computing system 110 can include other output devices such as speakers, printers, etc.

[0086] The computing system 110 can operate in a networked environment using logical connections to one or more remote computers. The computing system 110 may employ any known means of communications, such as through a local area network ("LAN") 152 or a wide area network ("WAN") or the Internet 154. Such networking environments are well known in enterprise-wide computer networks, intranets, and the Internet.

[0087] When used in a LAN networking environment, the computing system 110 is connected to the LAN 152 through an adapter or network interface 156 (communicatively linked to the bus 116). When used in a WAN networking environment, the computing system 110 often includes a modem 157 or other device for establishing communications over the WAN/Internet 154. The modem 157 is shown in FIG. 1 as communicatively linked between the interface 146 and the WAN/Internet 154. In a networked environment, program modules, application programs, or data, or portions thereof, can be stored in a server computer (not shown). Those skilled in the relevant art will readily recognize that the network connections shown in FIG. 4 are only some examples of establishing communication links between computers, and other links may be used, including wireless links.

[0088] The computing system 110 may include one or more interfaces such as slot 158 to allow the addition of devices either internally or externally to the computing system 110. For example, suitable interfaces may include ISA (i.e., Industry Standard Architecture), IDE, PCI (i.e., Personal Computer Interface) and/or AGP (i.e., Advance Graphics Processor) slot connectors for option cards, serial and/or parallel ports, USB ports (i.e., Universal Serial Bus), audio input/butput (i.e., i/O) and MIDI/joystick connectors, and/or slots for memory.

[0089] The term "computer-readable medium" as used herein refers to any medium that participates in providing instructions to processor unit 112 for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, hard, optical or magnetic disks 125, 130, 132 respectively. Volatile media includes dynamic memory, such as system memory 114. Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise system bus 116. Transmission media can also take the form of acoustic or light waves, such as those generated during radio wave and infrared data communications.

[0090] Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read.

[0091] Various forms of computer readable media may be involved in carrying one or more sequences of one or more instructions to processor unit 112 for execution. For example, the instructions may initially be carried on a magnetic disk of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. The modem 157 local to computer system 10 can receive the data on the telephone line and use an infrared transmitter to convert the data to an infrared signal. An infrared detector coupled to the system bus 116 can receive the data carried in the infrared signal and place the data on system bus 116. The system bus 116 carries the data to system memory 114, from which processor unit 112 retrieves and executes the instructions. The instructions received by system memory 114 may optionally be stored on storage device either before or after execution by processor unit 112.

[0092] All of the above U.S. patents, U.S. patent application publications, U.S. patent applications, foreign patents, foreign patent applications and non-patent publications referred to in this specification and/or listed in the Application Data Sheet are incorporated herein by reference, in their entireties.

[0093] From the foregoing it will be appreciated that, although specific embodiments of the invention have been described herein for purposes of illustration, various modifications may be made without deviating from the spirit and scope of the invention. Accordingly, the invention is not limited except as by the appended claims.

* * * * *


uspto.report is an independent third-party trademark research tool that is not affiliated, endorsed, or sponsored by the United States Patent and Trademark Office (USPTO) or any other governmental organization. The information provided by uspto.report is based on publicly available data at the time of writing and is intended for informational purposes only.

While we strive to provide accurate and up-to-date information, we do not guarantee the accuracy, completeness, reliability, or suitability of the information displayed on this site. The use of this site is at your own risk. Any reliance you place on such information is therefore strictly at your own risk.

All official trademark data, including owner information, should be verified by visiting the official USPTO website at www.uspto.gov. This site is not intended to replace professional legal advice and should not be used as a substitute for consulting with a legal professional who is knowledgeable about trademark law.

© 2024 USPTO.report | Privacy Policy | Resources | RSS Feed of Trademarks | Trademark Filings Twitter Feed