Nova Patents
EP1578019A2

Data compression

Abstract

Compression of streaming data is described. In an implementation, a method includes compressing data for communication in a terminal services environment by finding an index in a lookup table that matches an initial sequence in data. The lookup table includes a plurality of entries. Each of the entries is discoverable utilizing a particular one of a plurality of the indices. Each entry references whether a corresponding index is located in a history buffer, and if so, further references one or more locations of the corresponding index in the history buffer. If the corresponding entry of the matching index references a plurality of locations, for each location, a sequence having the matching index is compared with a sequence in the data that includes the initial sequence. A matching sequence is derived from the comparison based on a length and the location of the sequence at each of the locations. The matching sequence is represented using a representation that includes the length and the location of the matching sequence in the history buffer.

EP1578019A2, drawing sheet 1
Sheet 1 of 10

Term

Term ended

Projected expiry passed 24 February 2025, 1.6 years ago.

  1. Priority
  2. Filed
  3. Published
  4. Projected expiry
  5. Today

46 claims: 7 independent, 39 dependent

  1. 1
    A method comprising compressing data for communication in a terminal services environment by:finding an index in a lookup table that matches an initial sequence in data, wherein: the lookup table includes a plurality of entries, each said entry being discoverable utilizing a particular one of a plurality of said indices;and each said entry references whether a corresponding said index is located in a history buffer, and if so, further references one or more locations of the corresponding said index in the history buffer;and if the corresponding said entry of the matching index references a plurality of said locations: for each said location, comparing a sequence at the location having the matching index with a sequence in the data, said sequence including the initial sequence;deriving a matching sequence from the comparison based on at least one of a length and the location of the sequence at each said location;and representing the matching sequence using a representation that includes the length and the location of the matching sequence in the history buffer.
  2. 12
    A method comprising compressing data for communication in a terminal services environment by:adding data to a history buffer;updating a lookup table that references the history buffer to include the added data, wherein: the lookup table includes a plurality of entries, each said entry being discoverable utilizing a particular one of a plurality of indices;and each said entry references whether a corresponding said index is located in a history buffer, and if so, further references one or more locations of the corresponding said index in the history buffer;starting a current pointer at the added data in the history buffer;finding one said index in the lookup table that matches an initial sequence at the current pointer;if the corresponding said entry of the matching index references a plurality of said locations: comparing a sequence at each said location having the matching index with a sequence in the added input data that includes the initial sequence;deriving a matching sequence from the comparison;representing the matching sequence with a representation that includes the location and a length of the matching sequence in the history buffer;employing a cost function to determine if the representation utilizes less memory space when stored than the matching sequence,    if so, configuring data to include the representation and advancing the current pointer by the length of the matching sequence,    otherwise, configuring data to include the initial sequence and advancing the current pointer by a length of the initial sequence;and    when the current pointer has advanced through the added data, packetizing the configured data for streaming.
  3. 17
    A method comprising:receiving feedback that indicates availability of resources for communicating data over a network from a terminal service provided by a server to a client;and tuning one or more parameters of a compression routine utilized to compress the data in response to the feedback.
  4. 20
    A method comprising:receiving a request at a server from a client for remote access to an application or a file that is available through the server;determining availability of resources for communicating data in response to the request over a network;and tuning one or more parameters of a compression protocol utilized to compress the data based on the determined availability.
  5. 23
    A server comprising:a history buffer having a plurality of bytes;a lookup table that includes a plurality of entries, each said entry: being discoverable utilizing a particular one of a plurality of indices;and references whether a corresponding said index is located in the history buffer, and if so, further references one or more locations of the corresponding said index in the history buffer;and a compression module that is executable to: find one said index sequence in the lookup table that matches an initial sequence in data for communication to a client from a terminal service;if the corresponding said entry of the matching index references a plurality of said locations: for each said location, compare a sequence at the location having the matching index with a sequence in the data, said sequence including the initial sequence;derive a matching sequence from the comparison based on at least one of a length and the location of the sequence at each said location;and represent the matching sequence using a representation that includes the length and the location of the matching sequence in the history buffer.
  6. 33
    A system comprising:a network;a server including: a first history buffer having a plurality of bytes;a lookup table that includes a plurality of entries, each said entry being discoverable utilizing a particular one of a plurality of indices, each said entry references whether a corresponding said index is location in the history buffer, and if so, one or more locations of the corresponding said index in the history buffer;and a compression module that is executable to: find one said index in the lookup table that matches an initial sequence at a current pointer in data to be streamed in response to a request for remote access;if the corresponding said entry of the matching index references one or more said locations: compare a sequence at each said location having the matching index with a sequence in the data at the current pointer;derive a matching sequence from the comparison;configure data to include a representation that includes the location and a length of the matching sequence in the first history buffer and advance the current pointer by the length of the matching sequence;if the corresponding said entry of the matching index does not reference any said location, configure data to include the initial sequence and advancing the current pointer by a length of the initial sequence;and when the current pointer has advanced through the added data, stream the configured data over the network;and a client communicatively coupled to the network and including a second said history buffer and a decompression module that is executable to decompress the streamed data by finding the matching sequence in the second said history buffer based on the location and the length indicated by the representation.
  7. 38
    A computer-readable medium comprising computer-executable instructions that, when executed by a computer, direct the computer to:find an index in a lookup table that matches an initial sequence in data for streaming to a client, the data for generating a user interface of an application that is being executed remotely from the client, wherein: the lookup table includes a plurality of entries, each said entry being discoverable utilizing a particular one of a plurality of said indices;and each said entry references whether a corresponding said index is located in a history buffer;and if so, further references one or more locations of the corresponding said index in the history buffer;if the corresponding said entry of the matching index references a plurality of said locations: for each said location, compare a sequence at the location having the matching index with a sequence in the data, said sequence including the initial sequence;and compute, from the comparison, a length of the matching sequence.