1461180573-89e95085-c066-4c64-82ac-0954d309b6b7

1. A method of compressing computer video into n-bit packets, comprising:
examining the color of each video pixel within selected video frames; determining which of the following conditions applies for each pixel in each selected frame:
a first condition wherein a current pixel is unchanged versus a pixel at the same screen position in the previously selected frame;
a second condition wherein the current pixel is unchanged versus a pixel directly to the left of the current pixel in the current frame;
a third condition wherein the current pixel is unchanged versus a pixel directly above the current pixel in the current frame;
a fourth condition wherein a sequential series of x pixels, beginning with the current pixel, are comprised only of colors from a two-color set and x is at least (n4); and
a fifth condition wherein each of the first, second, third and fourth conditions do not apply;
(a) if any of said first, second or third conditions apply, determining which of said conditions applies for the longest number of sequential pixels beginning with the current pixel, and
(i) if said determined condition is the first condition, encoding a packet including:
one bit indicating that said fifth condition does not apply, second and third bits together indicating that said first condition applies, and
(n3) payload bits indicating the number of sequential pixels, beginning with the current pixel, that are unchanged versus pixels at the same screen positions in the previously selected frame;
(ii) if said determined condition is the second condition, encoding a packet including:
one bit indicating that said fifth condition does not apply,
second and third bits together indicating that said second condition applies, and
(n3) payload bits indicating the number of sequential pixels, beginning with the current pixel, that can be copied from the pixel in the current frame directly to the left of the current pixel;
(iii) if said determined condition is the third condition, encoding a packet including:
one bit indicating that said fifth condition does not apply,
second and third bits together indicating that said third condition applies, and
(n3) payload bits indicating a number of sequential pixels, beginning with the current pixel, that can be copied from said number of pixels in the current frame directly above each of them;
(b) if each of said first, second and third conditions do not apply and the fourth condition does apply, encoding one or more n-bit packets including:
(i) a first packet, including:
one bit indicating that said fifth condition does not apply,
second and third bits together indicating that said fourth condition applies,
a fourth bit indicating whether the first packet is followed by another packet corresponding to the said series of x pixels;
(n4) bits indicating which colors, from said two-color set, applies to each of the first (n4) pixels in said series of x pixels; and
(ii) if x is greater than (2n-5), one or more subsequent packets, each including:
one bit indicating whether another packet corresponding to the said series of x pixels follows; and
(n1) bits indicating which colors, from said two-color set, applies to each of the next (n1) pixels in said series of x pixels; and
(c) if said fifth condition applies, encoding an n-bit packet including:
one bit indicating that said fifth condition applies; and

(n1) bits defining the color of the current pixel.
2. A method according to claim 1, further including:
determining that more than (n1) bits are required to define pixel colors, and wherein;
an additional packet is encoded following the packet encoded in step (c), which include;
n bits of additional color defining bits, thus creating a total of (2n-1) bits to define the color of the current pixel.
3. A method according to claim 2, further including:
determining that more than (2n1) bits are required to define pixel colors, and wherein;
one or more further packets are encoded following said additional packet each further packet including:
n bits of additional color defining bits, thus creating a total of (Yn-1) bits to define the color of the current pixel where Y is the sum total number of encoded packets.
4. A method according to claim 1, wherein the encoding step (a)(i) includes encoding packets with (n3) payload bits defining repeat counts from two to 2(n3)1.
5. A method according to claim 4 wherein n8 and the (n3) payload bits define repeat counts from two to thirty-three.
6. A method according to claim 1, further including the step of:
in encoding steps (a)(i), (a)(ii) or (a)(iii), when the required repeat count exceeds the payload capacity of one packet, encoding y number of packets of respective (n3) payloads which together provide a total combined payload equal to y times (n3) bits.
7. A method according to claim 6, wherein:
each single packet payload has the capacity to define repeat counts up to 2(n3); when the required repeat count exceeds 2(n3), a second packet is encoded to provide a 2*(n3) total combined payload, and the first and second packets provide for repeat counts of 2(2*(n3)); and
when the required repeat count exceeds both the available 2(n3) of a single packet and the 2(2*(n3)) of two packets, a third packet is encoded to provide a 3*(n3) total combined payload, and these first, second, and third packets provide for repeat counts up to 2(3*(n3)).
8. A method according to claim 1, wherein the encoding step (c) includes:
defining less than 2(n1) colors for said current pixel with said (n1) payload bits and defining additional gray intensities with the unused remainder of the 2(n1) color combinations.
9. A method according to claim 1, wherein the encoding step (c) includes using seven bits to define:
five different intensities each of red, green, and blue whereby a combination of equal intensities of red, green, and blue define five gray intensities; and
three additional gray intensities different from the five gray intensities defined by the equal intensities of red, green and blue.
10. A method according to claim 1, further comprising the step of:
decoding the packets by software resident on a personal computer.
11. A method according to claim 1, wherein the steps of examining the color of each video pixel and determining which of the conditions applies for each pixel further includes:
reading ahead of the current pixel to subsequent pixels to determine whether the fourth condition applies; and
determining whether more than one of the prioritized conditions applies for the current pixel, and if so, for the subset of applicable prioritized conditions:
(i) reading the next-subsequent pixel to determine if the subset of prioritized conditions also applies to the next-subsequent pixel;
(ii) if one or more of the subset of prioritized conditions does not apply to the next-subsequent pixel, deleting the inapplicable one or more prioritized conditions from the subset of applicable prioritized conditions; and
(iii) repeating steps (i) and (ii) until no prioritized condition still applies and thereafter:
(a) encoding the repeat count into one or more packets in accordance with the highest rated prioritized condition last left standing.
12. Apparatus for compressing computer video into n-bit packets, comprising an encoder that:
(1) examines the color of each pixel in selected video frames;
(2) determines which of the following conditions applies for the current pixel in the selected frame:
a first condition wherein a current pixel is unchanged versus a pixel at the same screen position in the previously selected frame;
a second condition wherein the current pixel is unchanged versus a pixel directly to the left of the current pixel in the current frame;
a third condition wherein the current pixel is unchanged versus a pixel directly above the current pixel in the current frame;
a fourth condition wherein a sequential series of x pixels, beginning with the current pixel, are comprised only of colors from a two-color set and x is at least (n4); and
a fifth condition wherein each of the first, second, third and fourth conditions do not apply; and

(3) encodes a packet, which includes:
(a) if it is determined said first condition applies:
one bit indicating that said fifth condition does not apply, second and third bits together indicating that said first condition applies, and

(n3) payload bits indicating the number of sequential pixels, beginning with the current pixel, that are unchanged versus pixels at the same screen position in the previously selected frame;
(b) if it is determined said second condition, but not said first condition, applies:
one bit indicating that said fifth condition does not apply,
second and third bits together indicating that said second condition applies, and
(n3) payload bits indicating the number of sequential pixels, beginning with the current pixel, that can be copied from the pixel in the current frame directly to the left of the current pixel;

(c) if it is determined said third condition, but not said first or second conditions, applies:
one bit indicating that said fifth condition does not apply,
second and third bits together indicating that said third condition applies, and

(n3) payload bits indicating a number of sequential pixels, beginning with the current pixel, that can be copied from said number of pixels in the current frame directly above each of them;
(d) if it is determined said fourth condition, but not said first, second or third conditions, applies:
(i) a first packet, including:
one bit indicating that said fifth condition does not apply,
second and third bits together indicating that said fourth condition applies,
a fourth bit indicating whether the first packet is followed by another packet corresponding to the same series of x pixels; and
(n4) bits indicating which color, from said two-color set, applies to each of the (n4) pixels in said series of x pixels; and
(ii) if x>(n4), one or more subsequent packets, each including:
one bit indicating whether another packet corresponding to the same series of x pixels follows; and
(n1) bits indicating which color, from said two-color set, applies to each of the (n1) additional pixels in said series of x pixels; and
(e) if it is determined said fifth condition applies:
one bit indicating that said fifth condition applies; and

(n1) bits defining the color for the current pixel.
13. Apparatus according to claim 12, the encoder further:
determining if more than (n1) bits are required to define pixel colors, and wherein
one or more further packets are encoded following the packet encoded in step (e), each further packet including;
n bits of additional color defining bits, thus creating a total of (Yn1) bits to define the color of the current pixel, where Y is the sum total nu8 mber of encoded packets.
14. A method of compressing video, comprising:
comparing some portions of selected video frames to other portions, and encoding said some portions based on their locational relationship to said other portions, and;
identifying still other portions of the same selected video frames as pixels comprised only of colors from a two-color set, and encoding said still other portions as a series of bits having binary states corresponding to the two colors in said two-color set.
15. A method of compressing fixed-bit RGB video, comprising:
reducing an available number of different pixel colors by:
grouping predetermined intensities of the red, green and blue components of each pixel color into intensity zones and;
adding a greater number of gray intensity zones than would be naturally created when said red, green and blue components are all in the same said intensity zones as each other.
16. Apparatus, comprising:
an encoder that creates a data packet defining a present repeated sequence of pixels by copying the color of another pixel selected based on a frame location relationship to the present repeated sequence of pixels, and selects, for the present repeated sequence of pixels, the selected frame location relationship from a group of frame location relationship types such that the selected frame location relationship will yield the longest repeated sequence of all the frame location relationship types.
17. Apparatus according to claim 16, wherein:
when said encoder finds that the length of said repeated sequence for two or more frame location relationship types are equal, selecting the selected frame location relationship based on a predetermined hierarchy between said two or more frame location relationship types.
18. Apparatus according to claim 16, wherein:
said group of frame location relationship types include:
a pixel located to the left of said present pixel in the same frame;
a pixel located above said present pixel in the same frame; and
a pixel located in the previous frame at the same location as said present pixel.
19. Apparatus according to claim 16, wherein the encoder further:
makes a packet that defines color of the present pixel from a specific set of two colors.
20. Apparatus according to claim 16, wherein the encoder further:
makes a packet that defines a color of the present pixel from a test pattern of available colors.
21. A video compression routine including:
examining pixels in selected past and present video frames;
for a given said present frame and for a current pixel thereof, making fixed bit length packets that define at least the current pixel, said packets including:
(1) pixel-copy packets having at least one packet-type identifier bit and at least one repeat count identification bit;
(2) color defining packets having at least one packet-type identifier bit and at least one color identifier bit.
22. A video data compression routine according to claim 21, wherein said algorithm further includes:
for said given present frame and current pixel:
making two-color series encoded packets having at least one packet-type identifier bit and a series of binary color identifier bits corresponding to only two colors and coinciding with a color of said present pixel and a number of pixels immediately following said current pixel.
23. A video transmission system, comprising:
a video encoding routine to encode serial pixel data at a first processor according to an algorithm including, for a given set of pixels, choosing a more efficient one of:
(1) copy-pixel encoding;
(2) individually colored pixel encoding; and
(3) two-color series pixel encoding.
24. A video transmission system according to claim 23, wherein:
the copy-pixel encoding includes encoding based on a frame location relationship between the present pixel in the present frame and another pixel in the present frame.
25. A video transmission system according to claim 23, wherein:
the copy-pixel encoding includes encoding based on a selection of:
a relationship between the present pixel in the present frame and another pixel to the left of the present pixel in the present frame;
a relationship between the present pixel in the present frame and another pixel above the present pixel in the present frame; and
a relationship between the present pixel in the present frame and another pixel at the same location but in a previous frame.
26. A video transmission system according to claim 23, wherein:
the two-color series pixel encoding includes encoding wherein a sequential series of x pixels, beginning with the current pixel, are comprised only of colors from a two-color set.
27. A method of encoding video, comprising the steps of:
predefining a set of pixel-copy commands based on frame location relationships between the present pixel and other pixels;
for the present pixel, encoding according to a hierarchy selection from one of:
an identified repeat count associated with at least one of the pixel copy commands;
an identified series of pixels drawn from only two colors; and
an identified specific individual pixel color.
28. A method according to claim 27, wherein the encoding includes making fixed-size packets including an opcode portion and a payload portion.
29. A method according to claim 28, wherein at least some of the fixed-size packets include:
one bit identifying the hierarchy selection associated with individually colored pixels;
two additional bits identifying the hierarchy selections associated with three different pixel copy commands and the two-color series pixels command; and
a payload of at least n-bits.
30. A method according to claim 29, wherein others of the fixed-size packets include an extension bit linking the current packet with a previous packet and including a payload of greater than n-bits.
31. A method according to claim 29, wherein others of the fixed-size packets include an extension bit linking the current packet with the next packet, which next packet then includes a payload of greater than n-bits.
32. A method of compressing a video stream to be displayed at pixel locations on a screen, comprising:
(a) sequentially receiving frames of information from the video stream comprising sequential series of respective pixel identifiers;
(b) for a first received pixel identifier, comparing the first pixel identifier with;
(i) an adjacent-pixel identifier adjacent the first received pixel on the screen;
(ii) an above-pixel identifier above the first received pixel identifier on the screen; and
(iii) an old-pixel identifier at the same screen location as the first received pixel identifier but on a previous screen; and

(c) counting a number of pixels from the first received pixel identifier for which at least one of said conditions (i), (ii), and (iii) yields a continuous stream of identity conditions;
(d) encoding a data packet having:
a code identifying one of the three conditions (i), (ii), (iii) which provides the longest said continuous stream, and
information identifying the length of said longest continuous stream.
33. A system, comprising:
an input to receive a serial stream of information specifying a serial sequence of pixel video values in an order in which said pixel video values are to be written onto a video monitor;
an encoder continually reading the serial stream of information and determining whether a condition occurs in which a predetermined number of consecutive ones of said pixel video values consists from a group of only two color values, and when said condition occurs, encoding the predetermined number of consecutive ones of said pixel video values by creating a series command with a series of binary state values corresponding in sequence to said consecutive ones of said pixel video values and wherein one of said binary state values corresponds to one of said two pixel video values and the other of said binary state values corresponds to the other of said two pixel video values; and
said encoder encoding said serial stream of information using an alternative identification of said pixel video values when said encoder determines that said condition does not occur.
34. A system according to claim 33, wherein the encoder creates an instruction regarding the identity of said two color values followed by the series of binary states corresponding in sequence to said consecutive ones of said pixel video values.
35. A system according to claim 34, wherein:
said instruction regarding the identity is an instruction making reference to prior pixel video values in said serial stream of information.
36. A system according to claim 33, wherein:
the encoder corresponds with a decoder and said encoder provides no instruction to the decoder regarding the identity of the two color values:
when said condition occurs, the encoder provides an instruction identifying that the type of command being communicated is a command corresponding to a two color series; and
said decoder identifies the two color values based on a pre-established prior location of the two color values in the serial stream of information.
37. A system according to claim 33, wherein:
the alternative identification of said pixel video values includes a series of corresponding command packets digitally identifying consecutive corresponding ones of said pixel video values.
38. A system, comprising:
an input to receive a serial stream of information specifying a serial sequence of pixel video values in an order in which said pixel video values are to be written onto a video monitor;
an encoder continually reading the serial stream of information and determining whether a condition occurs in which a current pixel video value in the serial sequence of pixel video values is identical to a prior pixel video value located above said current pixel video value relative to their display on a computer monitor, and when said condition occurs, issuing a command to copy the prior pixel video value to determine the current pixel video value; and
said encoder encoding said serial stream of information using an alternative identification of said pixel video values when said encoder determines that said condition does not occur.
39. A system according to claim 38, wherein:
the alternative identification of said pixel video values includes a series of corresponding command packets digitally identifying consecutive corresponding ones of said pixel video values.
40. A method of transmitting frames of video information, comprising the steps of:
receiving serial video information;
creating commands encoding the serial video information into a series of video command functions by analyzing change relationships between current values of said serial video information and prior values of said serial video information; and
dynamically and automatically adjusting a frame transmission rate in accordance with degrees of said change relationships.
41. A method according to claim 40, wherein said prior values are encoded to optimize encoding by selecting for given pixels the more efficient of (1) commands to copy prior pixel values and (2) commands to identify a current pixel value by color definition.
42. A method according to claim 40, wherein the step of dynamically and automatically adjusting the frame transmission rate in accordance with degrees of said change relationships includes, when an available transmission capacity reduces, steadily maintaining a resolution quality of said video information while adjusting said frame transmission rate to accommodate said reduction in available capacity.
43. A method of encoding video information by:
providing color packets with 5 bits yielding 32 words for color identification;
predetermining 3 red values, 3 blue values and 3 green values for a total of 27 possible color combinations;
correlating 32 words with the 27 possible color combinations yielding 5 remaining words;
predetermining 5 extra gray values; and
correlating the remaining 5 words with the 5 extra gray values.
44. A method according to claim 43, further comprising:
providing color packets with greater than 5 bits; and
dynamically selecting the 5 bit packets for lower color resolutions and the higher bit packets for higher color resolutions.

The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.

What is claimed is:

1. A method for embedding a foreign data block in a host data file, comprising:
receiving a host data file, the host data file having a host data file format;
receiving a foreign data block;
determining characteristics of the foreign data block;
generating packing data that describes the characteristics of the foreign data block, including data marking the beginning and end of the foreign data block and further including an identifier designed to be distinguishable from all other data in the host data file; and
embedding the packing data and the foreign data block as a foreign data block packet in the host data file;
whereby the foreign data block is identifiable, extractable, and modifiable by computer programs not configured to recognize the host file data format.
2. The method of claim 1, wherein:
generating packing data includes generating a header for the foreign data block, the header including the identifier and indicating the beginning of the foreign data block packet and the beginning of the foreign data block.
3. The method of claim 2, wherein:
generating a header includes generating a header that indicates the end of the foreign data block packet.
4. The method of claim 2, wherein:
generating packing data includes generating a trailer for the foreign data block, the trailer indicating the end of the foreign data block.
5. The method of claim 2, wherein:
generating a header includes generating a header that indicates the end of the foreign data block.
6. The method of claim 1, further comprising:
including padding in the foreign data block packet to allow in-place modifications of the foreign data block that cause the foreign data block to expand.
7. The method of claim 6, wherein:
determining characteristics of the foreign data block includes determining a size of the foreign data block; and
the amount of padding is a function of the size of the foreign data block.
8. The method of claim 1, wherein:
the foreign data block is a data block not native to the host file format.
9. The method of claim 1, wherein the foreign data block is an Extensible Markup Language (XML) document and the host file is in a non-XML format.
10. The method of claim 9, wherein:
determining characteristics of the foreign data block includes determining a byte order and an encoding format of the foreign data block; and
generating a header includes generating a header that includes information for specifying the byte order and encoding format of the foreign data block, the encoding format being one of an 8, 16, or 32 bit Unicode format.
11. The method of claim 1, wherein generating an identifier includes generating a different identifier for each different type of foreign data block when there are multiple types of foreign data blocks in the host data file.
12. The method of claim 1, wherein the foreign data block includes metadata information that describes the host data file.
13. The method of claim 12, wherein:
receiving a host data file includes receiving a host data file having a non-XML format.
14. A computer program product, tangibly stored on a machine-readable medium, comprising instructions operable to cause a programmable processor to:
receive a host data file, the host data file having a host data file format that is not understood by the computer program product;
scan for a header that indicates the beginning of an embedded foreign data block packet that contains a foreign data block, the foreign data block having a format that is recognizable by the computer program, the header including an identifier designed to be distinguishable from all other data in the host data file, the header further describing the characteristics of the foreign data block; and
process the header when the header is located.
15. The computer program product of claim 14, further comprising instructions to:
process the foreign data block.
16. The computer program product of claim 15, further comprising instructions to:
stop processing the foreign data block when a trailer is detected, wherein the trailer indicates the end of the foreign data block.
17. The computer program product of claim 16, further comprising instructions to:
modify the foreign data block as specified by a user;
ensure that the modified foreign data block fits in the foreign data block packet; and
re-embed the modified foreign data block in place of the original foreign data block.
18. The computer program product of claim 16, further comprising instructions to:
modify the foreign data block as specified by a user;
rewrite the foreign data block packet;
ensure that the re-written foreign data block packet is the same size as the original foreign data block packet; and
re-embed the re-written foreign data block packet in place of the original foreign data block packet.
19. A method for embedding a foreign data block in a host data file, comprising:
receiving a host data file, the host data file having a host data format;
receiving a packet to be embedded into the host data file, the packet including a foreign data block and further including a header and a trailer that delimit the foreign data block, the header including an identifier designed to be distinguishable from all other data in the host data file; and
embedding the packet in the host data file;
whereby the foreign data block is identifiable, extractable, and modifiable by computer programs not configured to recognize the host file data format.
20. A computer program product, tangibly stored on a machine-readable medium, for embedding a foreign data block in a host data file, comprising instructions operable to cause a programmable processor to:
receive a host data file, the host data file having a host data format that is a native file format for the computer program product;
receive a packet to be embedded into the host data file, the packet including a foreign data block that is not native to the host data file format and further including a header and a trailer that delimit the foreign data block, the header including an identifier that is designed to be distinguishable from all other data in the host data file; and
embed the packet in the host data file;
whereby the foreign data block is identifiable, extractable, and modifiable by computer programs not configured to recognize the host file data format.
21. A computer program product, tangibly stored on a machine-readable medium, for embedding a foreign data block in a host data file, comprising instructions operable to cause a programmable processor to:
receive a host data file, the host data file having a host data file format that is a native file format for a host application;
receive a foreign data block, the foreign data block being a data block that is not native to the host data file format;
determine characteristics of the foreign data block;
generate information that describes the characteristics of the foreign data block, including information marking the beginning and end of the foreign data block and further including an identifier designed to be distinguishable from all other data in the host data file; and
embed the information and the foreign data block as a foreign data block packet in the host data file;
whereby the foreign data block is identifiable, extractable, and modifiable by computer programs not configured to recognize the host file data format.
22. A computer program product, tangibly stored on a machine-readable medium, for embedding metadata in a host data file having a non-XML format, comprising instructions operable to cause a programmable processor to:
receive a host data file having a format that is not XML and that is a native file format for a host application;
receive metadata having a format that is not native to the host data file format;
determine characteristics of the metadata;
generate information that describes the characteristics of the metadata, including information marking the beginning and end of the metadata and further including an identifier designed to be distinguishable from all other data in the host data file; and
embed the information and the metadata as a packet in the host data file;
whereby the metadata is identifiable, extractable, and modifiable by computer programs not configured to recognize the host file data format.