← Back to Patent Explorer
US6925606B2 Expired / Lapsed US ⏱️ 0.0 years remaining

Color quality and packet shaping features for displaying an application on a variety of client devices

Assignee: Sun Microsystems Inc
•
Filing: 2002-03-08
•
Granted: 2005-08-02
•
Expires: 2022-03-08
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract In a client-server architecture, data transmission performance enhancing features and mechanisms are described, including a color quality approach and a packet shaping approach. A method includes a color quality data transformation including: selecting a quality level to apply to a set of image data having a number of significant color bits defining an initial number of possible colors; applying a pixel mask to the set of image data, the initial number of possible colors reduced to a smaller number of possible colors as a function of the quality level; loading the set of image data into an output buffer; and sending the set of image data from the output buffer to a display engine. Another method includes a packet shaping data structure transformation including if i) a total network time, defined by a total time of requests in a pending request queue, is equal to or greater than a current round trip time, defined by twice a current latency, and ii) a total request time, defined by a sum of a total time of requests in the pending request queue and a total time of requests in a transmitted request queue, minus the total network time is equal to or less than half a preset limit, then forming a shaped packet by associating a first data portion with a second data portion and a header.

Inventors

  • 👤 Andrew Shaw
  • 👤 Karl R. Burgess

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-24 19:35
CPC Classifications
H; H04; H04L; H04L67/00; H04L67/2866; H04L67/30; H04L67/303; H04L67/34; H04L67/50; H04L67/60; H04L67/62; H04L69/00; H04L69/08; H04L69/18; H04L69/30; H04L69/32; H04L69/322; H04L69/329

Claims Analysis

Total Claims: 146
Claim 1
Independent Claim 678 words
In a client server network providing at least one application service for selection by a user via a client device, a method for transmitting to and displaying on the display device of the client device display requests of the requested application service which are not supported by the client device, comprising: downloading from the server and executing on the client device a display engine; initializing a protocol engine with parameters of the client device comprising display operations supported by the client device, the relative cost of each supported operation and a local performance factor and parameters of the connection from the server to the display engine comprising bandwidth and latency; executing on the server the protocol engine comprising the steps of: maintaining a first queue for retaining pending display requests and a second queue for retaining transmitted display requests of the requested application service for display on the client device; each request having a corresponding relative cost and request time determined by the relative cost and the local performance factor; maintaining a total request time for all requests in both queues and maintaining a total network time for all requests in the second queue; while the total request time is less than a predetermined first value: accepting a new pending request from the application service; executing the new pending display request to create an image to be displayed on the client device, saving the resulting image to memory and determining for the image its relative cost and its corresponding request time based the local performance factor; converting the new pending display request from the application service into a sequence of converted requests that are supported by the client device, placing the sequence of converted requests in the first queue, determining for each converted display request in the sequence its relative cost and its corresponding request time based on the local performance factor, and incrementing the total request time by the request time of each added request; while the total network time is less than a predetermined second value: optimizing the first queue using a merge optimization when the request times of the pending requests in the first queue exceed a predetermined third value and updating the total request time based on the results of the merge optimization; reading a pending request from the first queue and labeling each read request with a first sequence identifier; encoding each read display request for transmission to the display engine; placing a copy of the optimized request into the second queue, incrementing the total network time by the request time for the newly added request, and transmitting the encoded display request to the display engine; executing the display engine comprising the steps of: unencoding the received converted display request and displaying it on the client device; generating a second sequence identifier corresponding to first sequence identifier of the displayed request; and periodically transmitting to the protocol engine the second sequence identifier of the last received display request displayed on the client device; and upon receipt of the second sequence identifier, the protocol engine further comprising the steps of: deleting from the second queue the display request whose first sequence identifier is the same as the second sequence identifier and all pending displayed requests in the second queue having first sequence identifiers that are prior to such second sequence identifier; and decrementing from the total request time and from the total network time the request time values of each of the deleted display requests, wherein transmitting the encoded display request to the display engine includes a color quality data transformation including: selecting a quality level to apply to a set of image data having a number of significant color bits defining an initial number of possible colors; applying a pixel mask to the set of image data, the initial number of possible colors reduced to a smaller number of possible colors as a function of the quality level; loading the set of image data into an output buffer; and sending the set of image data from the output buffer to the display engine.
Claim 2
Dependent Claim 678 words
In a client server network providing at least one application service for selection by a user via a client device, a method for transmitting to and displaying on the display device of the client device display requests of the requested application service which are not supported by the client device, comprising: downloading from the server and executing on the client device a display engine; initializing a protocol engine with parameters of the client device comprising display operations supported by the client device, the relative cost of each supported operation and a local performance factor and parameters of the connection from the server to the display engine comprising bandwidth and latency; executing on the server the protocol engine comprising the steps of: maintaining a first queue for retaining pending display requests and a second queue for retaining transmitted display requests of the requested application service for display on the client device; each request having a corresponding relative cost and request time determined by the relative cost and the local performance factor; maintaining a total request time for all requests in both queues and maintaining a total network time for all requests in the second queue; while the total request time is less than a predetermined first value: accepting a new pending request from the application service; executing the new pending display request to create an image to be displayed on the client device, saving the resulting image to memory and determining for the image its relative cost and its corresponding request time based the local performance factor; converting the new pending display request from the application service into a sequence of converted requests that are supported by the client device, placing the sequence of converted requests in the first queue, determining for each converted display request in the sequence its relative cost and its corresponding request time based on the local performance factor, and incrementing the total request time by the request time of each added request; while the total network time is less than a predetermined second value: optimizing the first queue using a merge optimization when the request times of the pending requests in the first queue exceed a predetermined third value and updating the total request time based on the results of the merge optimization; reading a pending request from the first queue and labeling each read request with a first sequence identifier; encoding each read display request for transmission to the display engine; placing a copy of the optimized request into the second queue, incrementing the total network time by the request time for the newly added request, and transmitting the encoded display request to the display engine; executing the display engine comprising the steps of: unencoding the received converted display request and displaying it on the client device; generating a second sequence identifier corresponding to first sequence identifier of the displayed request; and periodically transmitting to the protocol engine the second sequence identifier of the last received display request displayed on the client device; and upon receipt of the second sequence identifier, the protocol engine further comprising the steps of: deleting from the second queue the display request whose first sequence identifier is the same as the second sequence identifier and all pending displayed requests in the second queue having first sequence identifiers that are prior to such second sequence identifier; and decrementing from the total request time and from the total network time the request time values of each of the deleted display requests, wherein transmitting the encoded display request to the display engine includes a color quality data transformation including: selecting a quality level to apply to a set of image data having a number of significant color bits defining an initial number of possible colors; applying a pixel mask to the set of image data, the initial number of possible colors reduced to a smaller number of possible colors as a function of the quality level; loading the set of image data into an output buffer; and sending the set of image data from the output buffer to the display engine.
Claim 3
Dependent Claim 49 words
The method of claim 1 , further comprising applying another pixel mask to the set of image data, the another pixel mask calculating a way point for each of the reduced number of possible colors as a function of the quality level and the initial number of possible colors.
Claim 4
Dependent Claim 14 words
The method of claim 2 , wherein the way point is a mid-way point.
Claim 5
Dependent Claim 15 words
The method of claim 2 , wherein the way point is not a mid-way point.
Claim 6
Dependent Claim 20 words
The method of claim 1 , further comprising applying a level of image compression to the set of image data.
Claim 7
Dependent Claim 34 words
The method of claim 5 , wherein the level of image compression is defined by the use of at least one technique selected from the group consisting of RLE, Basic HexTile and Advanced HexTile.
Claim 8
Dependent Claim 19 words
The method of claim 1 , further comprising applying a general packet compressor to the set of image data.
Claim 9
Dependent Claim 29 words
The method of claim 7 , wherein the general packet compressor includes at least one member selected from the group consisting of fixed level Zlib and variable level Zlib.
Claim 10
Dependent Claim 19 words
A computer program, comprising computer or machine readable program elements translatable for implementing the method of claim 1 .
Claim 11
Dependent Claim 14 words
An electronic media, comprising a program for performing the method of claim 1 .
Claim 12
Dependent Claim 10 words
An apparatus for performing the method of claim 1 .
Claim 13
Dependent Claim 30 words
The method of claim 1 wherein the relative cost for a request comprises a predetermined fixed basic operation cost and a localized cost per pixel calculated for the client device.
Claim 14
Dependent Claim 27 words
The method of claim 1 wherein the optimization of the first queue further comprises the step of performing a pruning optimization prior to performing the merge optimization.
Claim 15
Dependent Claim 24 words
The method of claim 13 wherein the optimization of the first queue further comprises performing an update scheduling optimization and an attribute scheduling optimization.
Claim 16
Dependent Claim 24 words
The method of claim 1 wherein the optimization of the first queue further comprises performing an update scheduling optimization and an attribute scheduling optimization.
Claim 17
Dependent Claim 43 words
The method of claim 1 wherein the encoding further comprises the steps of performing coordinate compression; performing run length encoding compression; serializing the coordinate compressed and run length encoded compressed request into fixed byte ordered strings; performing delta compression; and performing Zlib compression.
Claim 18
Dependent Claim 186 words
The method of claim 16 wherein the encoding further comprises the steps of: omitting the steps of run length encoding and delta compression if the bandwidth of the connection to the display engine greater than about 300 Kbytes per second; applying the steps of run length encoding and delta compression if the bandwidth of the connection to the display engine is less than about 300 Kbytes per second; omitting Zlib compression if the bandwidth of the connection to the display engine is greater than about 300 Kbytes per second; setting the ZLib compression to its lowest and quickest compression level if the bandwidth of the connection to the display engine is between about 100 Kbytes to about 300 Kbytes per second; setting the ZLib compression to a midrange compression level between its highest and lowest compression levels if the bandwidth of the connection to the display engine is between about 3 Kbytes to about 100 Kbytes per second; and setting the ZLib compression to its highest compression level if the bandwidth of the connection to the display engine is less than about 3 Kbytes per second.
Claim 19
Dependent Claim 27 words
The method of claim 1 further comprising: periodically updating the of bandwidth and latency parameters; and using the updated parameters to determine the level of encoding used.
Claim 20
Dependent Claim 26 words
The method of claim 1 further comprising: periodically updating the bandwidth and latency parameters; and using the updated parameters to determine the level of encoding used.
Claim 21
Dependent Claim 155 words
The method of claim 1 further comprising: periodically updating the client device local performance factor and using the updated performance factor to determine the request times of pending requests received after the updating has occurred; on moving a pending request from the first queue to the second queue adding to the request an time estimate of the time when that request should be removed from the second queue based on the updated local performance factor; on removing the request from the second queue, maintaining a running average and variance for the percentage error for the estimated time as compared to the actual time that the request was removed, and, if the total of the average error minus half of the variance exceeds a pre-set limit and the time since the last update is more then one minute then immediately repeating the steps of updating the connection parameters and the client device local performance factor parameter.
Claim 22
Dependent Claim 26 words
The method of claim 1 wherein the updated local performance is used to update the request times of the requests in the first and second queues.
Claim 23
Dependent Claim 35 words
The method of claim 1 wherein the predetermined first value is about five seconds, the predetermined second value is about two seconds, and the predetermined third value is about 1/20 of the predetermined first value.
Claim 24
Dependent Claim 745 words
In a client server network providing at least one application service for selection by a user via a client device having a display engine operating thereon, a method for converting, transmitting, and displaying requests of the requested application service that are not supported by the client device, comprising: downloading from the server and executing on the client device a display engine associated with the application service requested by the user; loading on a server in the network a protocol engine in communication with the display engine and the requested application service; using the display engine to determine parameters of the client device comprising display operations supported by the client device, the relative cost of each supported operation and a local performance factor and parameters of the connection from the server to the display engine comprising bandwidth and latency; transmitting to and initializing the protocol engine with the client device parameters and the connection parameters; executing the protocol engine comprising the steps of: maintaining a first queue for retaining pending display requests and a second queue for retaining transmitted display requests of the requested application service for display on the client device; each request having a corresponding relative cost and request time determined by the relative cost and the local performance factor; maintaining a total request time for all requests in both queues and maintaining a total network time for all requests in the second queue; while the total request time is less than a predetermined first value: accepting from the application service a new pending display request to be displayed on the client device; executing the new pending display request to create an image to be displayed on a portion of a display screen of a client device, saving the resulting image to memory, and determining for the image its relative cost and its corresponding request time based the local performance factor; converting, based on the support display operations of the client device, the new pending display request into a sequence of converted requests that are supported by the client device, placing the sequence of converted requests in the first queue, determining for each converted display request its relative cost and its corresponding request time based on the local performance factor, and incrementing the total request time by the request time of each converted request added to the first queue; while the total network time is less than a predetermined second value: optimizing the first queue using a merge optimization when the request times of the pending requests in the first queue exceed a predetermined third value and updating the total request time based on the results of the merge optimization; reading a pending request from the first queue and labeling each read request with a first sequence identifier; encoding each read display request for transmission to the display engine; placing a copy of the optimized request into the second queue and incrementing the total network time value for the newly added request; and transmitting the encoded display request to the display engine; executing the display engine comprising the steps of: unencoding the received converted display request and displaying it on the client device; generating a second sequence identifier corresponding to first sequence identifier of the displayed request; and periodically transmitting to the protocol engine the second sequence identifier of the last received display request displayed on the client device; and upon receipt of the second sequence identifier of the last displayed display request, the protocol engine further comprising the steps of: deleting from the second queue the display request whose first sequence identifier is the same as the second sequence identifier and all pending displayed requests in the second queue having identifiers that are prior to such second sequence unique identifier; and decrementing from the total request time and from the total network time the request time values of each of the deleted display requests, wherein transmitting the encoded display request to the display engine includes a color quality data transformation including: selecting a quality level to apply to a set of image data having a number of significant color bits defining an initial number of possible colors; applying a pixel mask to the set of image data, the initial number of possible colors reduced to a smaller number of possible colors as a function of the quality level; loading the set of image data into an output buffer; and sending the set of image data from the output buffer to the display engine.
Claim 25
Dependent Claim 745 words
In a client server network providing at least one application service for selection by a user via a client device having a display engine operating thereon, a method for converting, transmitting, and displaying requests of the requested application service that are not supported by the client device, comprising: downloading from the server and executing on the client device a display engine associated with the application service requested by the user; loading on a server in the network a protocol engine in communication with the display engine and the requested application service; using the display engine to determine parameters of the client device comprising display operations supported by the client device, the relative cost of each supported operation and a local performance factor and parameters of the connection from the server to the display engine comprising bandwidth and latency; transmitting to and initializing the protocol engine with the client device parameters and the connection parameters; executing the protocol engine comprising the steps of: maintaining a first queue for retaining pending display requests and a second queue for retaining transmitted display requests of the requested application service for display on the client device; each request having a corresponding relative cost and request time determined by the relative cost and the local performance factor; maintaining a total request time for all requests in both queues and maintaining a total network time for all requests in the second queue; while the total request time is less than a predetermined first value: accepting from the application service a new pending display request to be displayed on the client device; executing the new pending display request to create an image to be displayed on a portion of a display screen of a client device, saving the resulting image to memory, and determining for the image its relative cost and its corresponding request time based the local performance factor; converting, based on the support display operations of the client device, the new pending display request into a sequence of converted requests that are supported by the client device, placing the sequence of converted requests in the first queue, determining for each converted display request its relative cost and its corresponding request time based on the local performance factor, and incrementing the total request time by the request time of each converted request added to the first queue; while the total network time is less than a predetermined second value: optimizing the first queue using a merge optimization when the request times of the pending requests in the first queue exceed a predetermined third value and updating the total request time based on the results of the merge optimization; reading a pending request from the first queue and labeling each read request with a first sequence identifier; encoding each read display request for transmission to the display engine; placing a copy of the optimized request into the second queue and incrementing the total network time value for the newly added request; and transmitting the encoded display request to the display engine; executing the display engine comprising the steps of: unencoding the received converted display request and displaying it on the client device; generating a second sequence identifier corresponding to first sequence identifier of the displayed request; and periodically transmitting to the protocol engine the second sequence identifier of the last received display request displayed on the client device; and upon receipt of the second sequence identifier of the last displayed display request, the protocol engine further comprising the steps of: deleting from the second queue the display request whose first sequence identifier is the same as the second sequence identifier and all pending displayed requests in the second queue having identifiers that are prior to such second sequence unique identifier; and decrementing from the total request time and from the total network time the request time values of each of the deleted display requests, wherein transmitting the encoded display request to the display engine includes a color quality data transformation including: selecting a quality level to apply to a set of image data having a number of significant color bits defining an initial number of possible colors; applying a pixel mask to the set of image data, the initial number of possible colors reduced to a smaller number of possible colors as a function of the quality level; loading the set of image data into an output buffer; and sending the set of image data from the output buffer to the display engine.
Claim 26
Dependent Claim 49 words
The method of claim 23 , further comprising applying another pixel mask to the set of image data, the another pixel mask calculating a way point for each of the reduced number of possible colors as a function of the quality level and the initial number of possible colors.
Claim 27
Dependent Claim 14 words
The method of claim 24 , wherein the way point is a mid-way point.
Claim 28
Dependent Claim 15 words
The method of claim 24 , wherein the way point is not a mid-way point.
Claim 29
Dependent Claim 20 words
The method of claim 23 , further comprising applying a level of image compression to the set of image data.
Claim 30
Dependent Claim 34 words
The method of claim 27 , wherein the level of image compression is defined by the use of at least one technique selected from the group consisting of RLE, Basic HexTile and Advanced HexTile.
Claim 31
Dependent Claim 19 words
The method of claim 23 , further comprising applying a general packet compressor to the set of image data.
Claim 32
Dependent Claim 29 words
The method of claim 29 , wherein the general packet compressor includes at least one member selected from the group consisting of fixed level Zlib and variable level Zlib.
Claim 33
Dependent Claim 19 words
A computer program, comprising computer or machine readable program elements translatable for implementing the method of claim 23 .
Claim 34
Dependent Claim 14 words
An electronic media, comprising a program for performing the method of claim 23 .
Claim 35
Dependent Claim 10 words
An apparatus for performing the method of claim 23 .
Claim 36
Dependent Claim 27 words
The method of claim 23 wherein the relative cost comprises a predetermined fixed basic operation cost and a localized cost per pixel calculated for the client device.
Claim 37
Dependent Claim 27 words
The method of claim 23 wherein the optimization of the first queue further comprises the step of performing a pruning optimization prior to performing the merge optimization.
Claim 38
Dependent Claim 24 words
The method of claim 35 wherein the optimization of the first queue further comprises performing an update scheduling optimization and an attribute scheduling optimization.
Claim 39
Dependent Claim 24 words
The method of claim 23 wherein the optimization of the first queue further comprises performing an update scheduling optimization and an attribute scheduling optimization.
Claim 40
Dependent Claim 43 words
The method of claim 23 wherein the encoding further comprises the steps of: performing coordinate compression; performing run length encoding compression; serializing the coordinate compressed and run length encode compressed request into fixed byte ordered strings; performing delta compression; and performing Zlib compression.
Claim 41
Dependent Claim 186 words
The method of claim 38 wherein the encoding further comprises the steps of: omitting the steps of run length encoding and delta compression if the bandwidth of the connection to the display engine greater than about 300 Kbytes per second; applying the steps of run length encoding and delta compression if the bandwidth of the connection to the display engine is less than about 300 Kbytes per second; omitting Zlib compression if the bandwidth of the connection to the display engine is greater than about 300 Kbytes per second; setting the ZLib compression to its lowest and quickest compression level if the bandwidth of the connection to the display engine is between about 100 Kbytes to about 300 Kbytes per second; setting the ZLib compression to a midrange compression level between its highest and lowest compression levels if the bandwidth of the connection to the display engine is between about 3 Kbytes to about 100 Kbytes per second; and setting the ZLib compression to its highest compression level if the bandwidth of the connection to the display engine is less than about 3 Kbytes per second.
Claim 42
Dependent Claim 27 words
The method of claim 39 further comprising: periodically updating the bandwidth and latency parameters; and using the updated connection parameters to determine the level of encoding used.
Claim 43
Dependent Claim 156 words
The method of claim 39 further comprising: periodically updating the client device local performance factor parameter and using the updated performance factor to update the request times of pending requests received after the updating has occurred; on moving a pending request from the first queue to the second queue adding to the request an time estimate of the time when that request should be removed from the second queue based on the updated local performance factor; on removing the request from the second queue, maintaining a running average and variance for the percentage error for the estimated time as compared to the actual time that the request was removed, and, if the total of the average error minus half of the variance exceeds a pre-set limit and the time since the last update is more then 1 minute then immediately repeating the steps of updating the connection parameters and the client device local performance factor parameter.
Claim 44
Dependent Claim 26 words
The method of claim 39 wherein the updated local performance is used to update the request times of the requests in the first and second queues.
Claim 45
Dependent Claim 26 words
The method of claim 23 further comprising: periodically updating the bandwidth and latency parameters; and using the updated parameters to determine the level of encoding used.
Claim 46
Dependent Claim 35 words
The method of claim 23 wherein the predetermined first value is about five seconds, the predetermined second value is about two seconds, and the predetermined third value is about 1/20 of the predetermined first value.
Claim 47
Dependent Claim 24 words
The method of claim 44 wherein the optimization of the first queue further comprises performing an update scheduling optimization and an attribute scheduling optimization.
Claim 48
Dependent Claim 924 words
In a client server network providing at least one application service for selection by a user via a client device, a method for transmitting to and displaying on the display device of the client device display requests of the requested application service which are not supported by the client device, comprising: downloading from the server and executing on the client device a display engine associated with the application service requested by the user; loading on a server in the network a protocol engine in communication with the display engine and the requested application service; providing to the display a table of display operations expected to be supported by the client device on which the display engine is executing; using the display engine to determine parameters of the client device comprising: testing the operation of each of the expected display operations on the client device and modifying the table to indicate which of the expected display operations was successfully tested; determining a local performance factor for the client device; and determining parameters of the connection from the server to the display engine comprising bandwidth and latency; transmitting to and initializing the protocol engine with the client device parameters and the connection parameters as determined by the display engine; executing the protocol engine comprising the steps of: maintaining a first queue for retaining pending display requests and a second queue for retaining transmitted display requests of the requested application service for display on the client device; each request having a corresponding relative cost and request time determined by the relative cost and the local performance factor; maintaining a total request time for all requests in both queues and maintaining a total network time for all requests in the second queue; while the total request time is less than a predetermined first value: accepting from the application service a new pending display request to be displayed on the client device; executing the new pending display request to create an image to be displayed on a portion of a display screen of a client device, saving the resulting image to memory, and determining for the image its relative cost and its corresponding request time based the local performance factor; converting, based on the support display operations of the client device, the new pending display request into a sequence of converted requests that are supported by the client device, placing the sequence of converted requests in the first queue, determining for each converted display request its relative cost and its corresponding request time based on the local performance factor, and incrementing the total request time by the request time of each converted request added to the first queue; while the total network time is less than a predetermined second value: optimizing the first queue when the request times of the pending requests in the first queue exceed a predetermined third value by comparing the relative cost of the image to the sum of the relative costs of pending converted display requests in the first queue intended for display on the same portion of the display device of the client device as the image, and, if the relative cost of the image is less than the sum of the relative costs of the compared pending display requests: converting the image into a converted image request and determining its relative cost and its request time based on the local performance factor; replacing in the first queue the compared pending converted display requests with the converted image display request; and adjusting the total request time to reflect the addition of the converted image request and removal of the compared pending requests in the first queue; reading a pending request from the first queue and labeling each read request with a first sequence identifier; encoding each read display request for transmission to the display engine based on the bandwidth of the connection; placing a copy of the optimized request into the second queue and incrementing the total network time value for the newly added request; and transmitting the encoded display request to the display engine; using the display engine to process the received encoded display requests comprising the steps of: unencoding the converted display request and displaying it on the client device; generating a second sequence identifier corresponding to first sequence identifier of the displayed request; and periodically transmitting to the protocol engine the second sequence identifier of the last display request displayed on the client device; and upon receipt of the second sequence identifier of the last displayed display request, the protocol engine further comprising the steps of: deleting from the second queue the display request whose first sequence identifier is equal to the second sequence identifier and all pending displayed requests in the second queue having first sequence identifiers that are prior to such second sequence identifier; and decrementing from the total request time value and from the total network time value the time values of each of the deleted display requests, wherein transmitting the encoded display request to the display engine includes a color quality data transformation including: selecting a quality level to apply to a set of image data having a number of significant color bits defining an initial number of possible colors; applying a pixel mask to the set of image data, the initial number of possible colors reduced to a smaller number of possible colors as a function of the quality level; loading the set of image data into an output buffer; and sending the set of image data from the output buffer to the display engine.
Claim 49
Dependent Claim 924 words
In a client server network providing at least one application service for selection by a user via a client device, a method for transmitting to and displaying on the display device of the client device display requests of the requested application service which are not supported by the client device, comprising: downloading from the server and executing on the client device a display engine associated with the application service requested by the user; loading on a server in the network a protocol engine in communication with the display engine and the requested application service; providing to the display a table of display operations expected to be supported by the client device on which the display engine is executing; using the display engine to determine parameters of the client device comprising: testing the operation of each of the expected display operations on the client device and modifying the table to indicate which of the expected display operations was successfully tested; determining a local performance factor for the client device; and determining parameters of the connection from the server to the display engine comprising bandwidth and latency; transmitting to and initializing the protocol engine with the client device parameters and the connection parameters as determined by the display engine; executing the protocol engine comprising the steps of: maintaining a first queue for retaining pending display requests and a second queue for retaining transmitted display requests of the requested application service for display on the client device; each request having a corresponding relative cost and request time determined by the relative cost and the local performance factor; maintaining a total request time for all requests in both queues and maintaining a total network time for all requests in the second queue; while the total request time is less than a predetermined first value: accepting from the application service a new pending display request to be displayed on the client device; executing the new pending display request to create an image to be displayed on a portion of a display screen of a client device, saving the resulting image to memory, and determining for the image its relative cost and its corresponding request time based the local performance factor; converting, based on the support display operations of the client device, the new pending display request into a sequence of converted requests that are supported by the client device, placing the sequence of converted requests in the first queue, determining for each converted display request its relative cost and its corresponding request time based on the local performance factor, and incrementing the total request time by the request time of each converted request added to the first queue; while the total network time is less than a predetermined second value: optimizing the first queue when the request times of the pending requests in the first queue exceed a predetermined third value by comparing the relative cost of the image to the sum of the relative costs of pending converted display requests in the first queue intended for display on the same portion of the display device of the client device as the image, and, if the relative cost of the image is less than the sum of the relative costs of the compared pending display requests: converting the image into a converted image request and determining its relative cost and its request time based on the local performance factor; replacing in the first queue the compared pending converted display requests with the converted image display request; and adjusting the total request time to reflect the addition of the converted image request and removal of the compared pending requests in the first queue; reading a pending request from the first queue and labeling each read request with a first sequence identifier; encoding each read display request for transmission to the display engine based on the bandwidth of the connection; placing a copy of the optimized request into the second queue and incrementing the total network time value for the newly added request; and transmitting the encoded display request to the display engine; using the display engine to process the received encoded display requests comprising the steps of: unencoding the converted display request and displaying it on the client device; generating a second sequence identifier corresponding to first sequence identifier of the displayed request; and periodically transmitting to the protocol engine the second sequence identifier of the last display request displayed on the client device; and upon receipt of the second sequence identifier of the last displayed display request, the protocol engine further comprising the steps of: deleting from the second queue the display request whose first sequence identifier is equal to the second sequence identifier and all pending displayed requests in the second queue having first sequence identifiers that are prior to such second sequence identifier; and decrementing from the total request time value and from the total network time value the time values of each of the deleted display requests, wherein transmitting the encoded display request to the display engine includes a color quality data transformation including: selecting a quality level to apply to a set of image data having a number of significant color bits defining an initial number of possible colors; applying a pixel mask to the set of image data, the initial number of possible colors reduced to a smaller number of possible colors as a function of the quality level; loading the set of image data into an output buffer; and sending the set of image data from the output buffer to the display engine.
Claim 50
Dependent Claim 49 words
The method of claim 46 , further comprising applying another pixel mask to the set of image data, the another pixel mask calculating a way point for each of the reduced number of possible colors as a function of the quality level and the initial number of possible colors.
Claim 51
Dependent Claim 14 words
The method of claim 17 , wherein the way point is a mid-way point.
Claim 52
Dependent Claim 15 words
The method of claim 47 , wherein the way point is not a mid-way point.
Claim 53
Dependent Claim 20 words
The method of claim 46 , further comprising applying a level of image compression to the set of image data.
Claim 54
Dependent Claim 34 words
The method of claim 50 , wherein the level of image compression is defined by the use of at least one technique selected from the group consisting of RLE, Basic HexTile and Advanced HexTile.
Claim 55
Dependent Claim 19 words
The method of claim 46 , further comprising applying a general packet compressor to the set of image data.
Claim 56
Dependent Claim 29 words
The method of claim 52 , wherein the general packet compressor includes at least one member selected from the group consisting of fixed level Zlib and variable level Zlib.
Claim 57
Dependent Claim 19 words
A computer program, comprising computer or machine readable program elements translatable for implementing the method of claim 46 .
Claim 58
Dependent Claim 14 words
An electronic media, comprising a program for performing the method of claim 46 .
Claim 59
Dependent Claim 10 words
An apparatus for performing the method of claim 46 .
Claim 60
Dependent Claim 32 words
The method of claim 46 wherein the relative cost comprises a predetermined fixed basic operation cost and a localized per pixel cost based on a performance factor calculated for the client device.
Claim 61
Dependent Claim 28 words
The method of claim 46 wherein the optimization of the first queue further comprises the step of performing a pruning optimization prior to performing the step of optimization.
Claim 62
Dependent Claim 24 words
The method of claim 58 wherein the optimization of the first queue further comprises performing an update scheduling optimization and an attribute scheduling optimization.
Claim 63
Dependent Claim 43 words
The method of claim 46 wherein the encoding further comprises the steps of performing coordinate compression; performing run length encoding compression; serializing the coordinate compressed and run length encode compressed request into fixed byte ordered strings; performing delta compression; and performing Zlib compression.
Claim 64
Dependent Claim 186 words
The method of claim 46 wherein the encoding further comprises the steps of: omitting the steps of run length encoding and delta compression if the bandwidth of the connection to the display engine greater than about 300 Kbytes per second; applying the steps of run length encoding and delta compression if the bandwidth of the connection to the display engine is less than about 300 Kbytes per second; omitting Zlib compression if the bandwidth of the connection to the display engine is greater than about 300 Kbytes per second; setting the Zlib compression to its lowest and quickest compression level if the bandwidth of the connection to the display engine is between about 100 Kbytes to about 300 Kbytes per second; setting the Zlib compression to a midrange compression level between the lowest and highest compression levels if the bandwidth of the connection to the display engine is between about 3 Kbytes to about 100 Kbytes per second; and setting the Zlib compression to its highest compression level if the bandwidth of the connection to the display engine is less than about 3 Kbytes per second.
Claim 65
Dependent Claim 156 words
The method of claim 46 further comprising: periodically updating the client device local performance factor parameter and using the updated performance factor to update the request times of pending requests received after the updating has occurred; on moving a pending request from the first queue to the second queue adding to the request an time estimate of the time when that request should be removed from the second queue based on the updated local performance factor; on removing the request from the second queue, maintaining a running average and variance for the percentage error for the estimated time as compared to the actual time that the request was removed, and, if the total of the average error minus half of the variance exceeds a pre-set limit and the time since the last update is more then 1 minute then immediately repeating the steps of updating the connection parameters and the client device local performance factor parameter.
Claim 66
Dependent Claim 26 words
The method of claim 46 wherein the updated local performance is used to update the request times of the requests in the first and second queues.
Claim 67
Dependent Claim 35 words
The method of claim 46 wherein the predetermined first value is about five seconds, the predetermined second value is about two seconds, and the predetermined third value is about 1/20 of the predetermined first value.
Claim 68
Dependent Claim 660 words
In a client server network providing at least one application service for selection by a user via a client device, a method for transmitting to and displaying on the display device of the client device display requests of the requested application service which are not supported by the client device, comprising: downloading from the server and executing on the client device a display engine; initializing a protocol engine with parameters of the client device comprising display operations supported by the client device, the relative cost of each supported operation and a local performance factor and parameters of the connection from the server to the display engine comprising bandwidth and latency; executing on the server the protocol engine comprising the steps of: maintaining a first queue for retaining pending display requests and a second queue for retaining transmitted display requests of the requested application service for display on the client device; each request having a corresponding relative cost and request time determined by the relative cost and the local performance factor; maintaining a total request time for all requests in both queues and maintaining a total network time for all requests in the second queue; while the total request time is less than a predetermined first value: accepting a new pending request from the application service; executing the new pending display request to create an image to be displayed on the client device, saving the resulting image to memory and determining for the image its relative cost and its corresponding request time based the local performance factor; converting the new pending display request from the application service into a sequence of converted requests that are supported by the client device, placing the sequence of converted requests in the first queue, determining for each converted display request in the sequence its relative cost and its corresponding request time based on the local performance factor, and incrementing the total request time by the request time of each added request; while the total network time is less than a predetermined second value: optimizing the first queue using a merge optimization when the request times of the pending requests in the first queue exceed a predetermined third value and updating the total request time based on the results of the merge optimization; reading a pending request from the first queue and labeling each read request with a first sequence identifier; encoding each read display request for transmission to the display engine; placing a copy of the optimized request into the second queue, incrementing the total network time by the request time for the newly added request, and transmitting the encoded display request to the display engine; executing the display engine comprising the steps of: unencoding the received converted display request and displaying it on the client device; generating a second sequence identifier corresponding to first sequence identifier of the displayed request; and periodically transmitting to the protocol engine the second sequence identifier of the last received display request displayed on the client device; and upon receipt of the second sequence identifier, the protocol engine further comprising the steps of: deleting from the second queue the display request whose first sequence identifier is the same as the second sequence identifier and all pending displayed requests in the second queue having first sequence identifiers that are prior to such second sequence identifier; and decrementing from the total request time and from the total network time the request time values of each of the deleted display requests, wherein transmitting the encoded display request to the display engine includes a packet shaping data structure transformation including: if i) the total network time is equal to or greater than a current round trip time, defined by twice a current latency, and ii) the total request time minus the total network time is equal to or less than half a preset limit, then forming a shaped packet by associating a first data portion with a second data portion and a header.
Claim 69
Dependent Claim 660 words
In a client server network providing at least one application service for selection by a user via a client device, a method for transmitting to and displaying on the display device of the client device display requests of the requested application service which are not supported by the client device, comprising: downloading from the server and executing on the client device a display engine; initializing a protocol engine with parameters of the client device comprising display operations supported by the client device, the relative cost of each supported operation and a local performance factor and parameters of the connection from the server to the display engine comprising bandwidth and latency; executing on the server the protocol engine comprising the steps of: maintaining a first queue for retaining pending display requests and a second queue for retaining transmitted display requests of the requested application service for display on the client device; each request having a corresponding relative cost and request time determined by the relative cost and the local performance factor; maintaining a total request time for all requests in both queues and maintaining a total network time for all requests in the second queue; while the total request time is less than a predetermined first value: accepting a new pending request from the application service; executing the new pending display request to create an image to be displayed on the client device, saving the resulting image to memory and determining for the image its relative cost and its corresponding request time based the local performance factor; converting the new pending display request from the application service into a sequence of converted requests that are supported by the client device, placing the sequence of converted requests in the first queue, determining for each converted display request in the sequence its relative cost and its corresponding request time based on the local performance factor, and incrementing the total request time by the request time of each added request; while the total network time is less than a predetermined second value: optimizing the first queue using a merge optimization when the request times of the pending requests in the first queue exceed a predetermined third value and updating the total request time based on the results of the merge optimization; reading a pending request from the first queue and labeling each read request with a first sequence identifier; encoding each read display request for transmission to the display engine; placing a copy of the optimized request into the second queue, incrementing the total network time by the request time for the newly added request, and transmitting the encoded display request to the display engine; executing the display engine comprising the steps of: unencoding the received converted display request and displaying it on the client device; generating a second sequence identifier corresponding to first sequence identifier of the displayed request; and periodically transmitting to the protocol engine the second sequence identifier of the last received display request displayed on the client device; and upon receipt of the second sequence identifier, the protocol engine further comprising the steps of: deleting from the second queue the display request whose first sequence identifier is the same as the second sequence identifier and all pending displayed requests in the second queue having first sequence identifiers that are prior to such second sequence identifier; and decrementing from the total request time and from the total network time the request time values of each of the deleted display requests, wherein transmitting the encoded display request to the display engine includes a packet shaping data structure transformation including: if i) the total network time is equal to or greater than a current round trip time, defined by twice a current latency, and ii) the total request time minus the total network time is equal to or less than half a preset limit, then forming a shaped packet by associating a first data portion with a second data portion and a header.
Claim 70
Dependent Claim 21 words
The method of claim 65 , further comprising routing the shaped packet to a client device via the transmitted request queue.
Claim 71
Dependent Claim 17 words
The method of claim 65 , further comprising storing the shaped packet in a shaped packet buffer.
Claim 72
Dependent Claim 31 words
The method of claim 67 , further comprising routing the shaped packet from the shaped packet buffer to a client device when a capacity of the shaped packet buffer is reached.
Claim 73
Dependent Claim 53 words
The method of claim 67 , further comprising routing the shaped packet from the shaped packet buffer to a client device when i) the total network time is less than the current round trip time or ii) the total request time minus the total network time is greater than half the preset limit.
Claim 74
Dependent Claim 28 words
The method of claim 67 , further comprising routing the shaped packet from the shaped packet buffer to a client device after a period of time has passed.
Claim 75
Dependent Claim 26 words
The method of claim 65 , further comprising forming another shaped packet by associating a third data portion with a fourth data portion and another header.
Claim 76
Dependent Claim 26 words
The method of claim 71 , further comprising routing the shaped packet and the another shaped packet to a client device via the transmitted request queue.
Claim 77
Dependent Claim 22 words
The method of claim 71 , further comprising storing the shaped packet and the another shaped packet in a shaped packet buffer.
Claim 78
Dependent Claim 36 words
The method of claim 73 , further comprising routing the shaped packet and the another shaped packet from the shaped packet buffer to a client device when a capacity of the shaped packet buffer is reached.
Claim 79
Dependent Claim 53 words
The method of claim 73 , further comprising routing the shaped packet from the shaped packet buffer to a client device when i) the total network time is less than the current round trip time or ii) the total request time minus the total network time is greater than half the preset limit.
Claim 80
Dependent Claim 28 words
The method of claim 73 , further comprising routing the shaped packet from the shaped packet buffer to a client device after a period of time has passed.
Claim 81
Dependent Claim 19 words
A computer program, comprising computer or machine readable program elements translatable for implementing the method of claim 65 .
Claim 82
Dependent Claim 14 words
An electronic media, comprising a program for performing the method of claim 65 .
Claim 83
Dependent Claim 10 words
An apparatus for performing the method of claim 65 .
Claim 84
Dependent Claim 30 words
The method of claim 65 wherein the relative cost for a request comprises a predetermined fixed basic operation cost and a localized cost per pixel calculated for the client device.
Claim 85
Dependent Claim 27 words
The method of claim 65 wherein the optimization of the first queue further comprises the step of performing a pruning optimization prior to performing the merge optimization.
Claim 86
Dependent Claim 24 words
The method of claim 81 wherein the optimization of the first queue further comprises performing an update scheduling optimization and an attribute scheduling optimization.
Claim 87
Dependent Claim 24 words
The method of claim 65 wherein the optimization of the first queue further comprises performing an update scheduling optimization and an attribute scheduling optimization.
Claim 88
Dependent Claim 43 words
The method of claim 65 wherein the encoding further comprises the steps of performing coordinate compression; performing run length encoding compression; serializing the coordinate compressed and run length encoded compressed request into fixed byte ordered strings; performing delta compression; and performing Zlib compression.
Claim 89
Dependent Claim 186 words
The method of claim 84 wherein the encoding further comprises the steps of: omitting the steps of run length encoding and delta compression if the bandwidth of the connection to the display engine greater than about 300 Kbytes per second; applying the steps of run length encoding and delta compression if the bandwidth of the connection to the display engine is less than about 300 Kbytes per second; omitting Zlib compression if the bandwidth of the connection to the display engine is greater than about 300 Kbytes per second; setting the ZLib compression to its lowest and quickest compression level if the bandwidth of the connection to the display engine is between about 100 Kbytes to about 300 Kbytes per second; setting the ZLib compression to a midrange compression level between its highest and lowest compression levels if the bandwidth of the connection to the display engine is between about 3 Kbytes to about 100 Kbytes per second; and setting the ZLib compression to its highest compression level if the bandwidth of the connection to the display engine is less than about 3 Kbytes per second.
Claim 90
Dependent Claim 27 words
The method of claim 65 further comprising: periodically updating the of bandwidth and latency parameters; and using the updated parameters to determine the level of encoding used.
Claim 91
Dependent Claim 26 words
The method of claim 65 further comprising: periodically updating the bandwidth and latency parameters; and using the updated parameters to determine the level of encoding used.
Claim 92
Dependent Claim 155 words
The method of claim 65 further comprising: periodically updating the client device local performance factor and using the updated performance factor to determine the request times of pending requests received after the updating has occurred; on moving a pending request from the first queue to the second queue adding to the request an time estimate of the time when that request should be removed from the second queue based on the updated local performance factor; on removing the request from the second queue, maintaining a running average and variance for the percentage error for the estimated time as compared to the actual time that the request was removed, and, if the total of the average error minus half of the variance exceeds a pre-set limit and the time since the last update is more then one minute then immediately repeating the steps of updating the connection parameters and the client device local performance factor parameter.
Claim 93
Dependent Claim 26 words
The method of claim 69 wherein the updated local performance is used to update the request times of the requests in the first and second queues.
Claim 94
Dependent Claim 35 words
The method of claim 65 wherein the predetermined first value is about five seconds, the predetermined second value is about two seconds, and the predetermined third value is about 1/20 of the predetermined first value.
Claim 95
Dependent Claim 727 words
In a client server network providing at least one application service for selection by a user via a client device having a display engine operating thereon, a method for converting, transmitting, and displaying requests of the requested application service that are not supported by the client device, comprising: downloading from the server and executing on the client device a display engine associated with the application service requested by the user; loading on a server in the network a protocol engine in communication with the display engine and the requested application service; using the display engine to determine parameters of the client device comprising display operations supported by the client device, the relative cost of each supported operation and a local performance factor and parameters of the connection from the server to the display engine comprising bandwidth and latency; transmitting to and initializing the protocol engine with the client device parameters and the connection parameters; executing the protocol engine comprising the steps of: maintaining a first queue for retaining pending display requests and a second queue for retaining transmitted display requests of the requested application service for display on the client device; each request having a corresponding relative cost and request time determined by the relative cost and the local performance factor; maintaining a total request time for all requests in both queues and maintaining a total network time for all requests in the second queue; while the total request time is less than a predetermined first value: accepting from the application service a new pending display request to be displayed on the client device; executing the new pending display request to create an image to be displayed on a portion of a display screen of a client device, saving the resulting image to memory, and determining for the image its relative cost and its corresponding request time based the local performance factor; converting, based on the support display operations of the client device, the new pending display request into a sequence of converted requests that are supported by the client device, placing the sequence of converted requests in the first queue, determining for each converted display request its relative cost and its corresponding request time based on the local performance factor, and incrementing the total request time by the request time of each converted request added to the first queue; while the total network time is less than a predetermined second value: optimizing the first queue using a merge optimization when the request times of the pending requests in the first queue exceed a predetermined third value and updating the total request time based on the results of the merge optimization; reading a pending request from the first queue and labeling each read request with a first sequence identifier; encoding each read display request for transmission to the display engine; placing a copy of the optimized request into the second queue and incrementing the total network time value for the newly added request; and transmitting the encoded display request to the display engine; executing the display engine comprising the steps of: unencoding the received converted display request and displaying it on the client device; generating a second sequence identifier corresponding to first sequence identifier of the displayed request; and periodically transmitting to the protocol engine the second sequence identifier of the last received display request displayed on the client device; and upon receipt of the second sequence identifier of the last displayed display request, the protocol engine further comprising the steps of: deleting from the second queue the display request whose first sequence identifier is the same as the second sequence identifier and all pending displayed requests in the second queue having identifiers that are prior to such second sequence unique identifier; and decrementing from the total request time and from the total network time the request time values of each of the deleted display requests, wherein transmitting the encoded display request to the display engine includes a packet shaping data structure transformation including: if i) the total network time is equal to or greater than a current round trip time, defined by twice a current latency, and ii) the total request time minus the total network time is equal to or less than half a preset limit, then forming a shaped packet by associating a first data portion with a second data portion and a header.
Claim 96
Dependent Claim 727 words
In a client server network providing at least one application service for selection by a user via a client device having a display engine operating thereon, a method for converting, transmitting, and displaying requests of the requested application service that are not supported by the client device, comprising: downloading from the server and executing on the client device a display engine associated with the application service requested by the user; loading on a server in the network a protocol engine in communication with the display engine and the requested application service; using the display engine to determine parameters of the client device comprising display operations supported by the client device, the relative cost of each supported operation and a local performance factor and parameters of the connection from the server to the display engine comprising bandwidth and latency; transmitting to and initializing the protocol engine with the client device parameters and the connection parameters; executing the protocol engine comprising the steps of: maintaining a first queue for retaining pending display requests and a second queue for retaining transmitted display requests of the requested application service for display on the client device; each request having a corresponding relative cost and request time determined by the relative cost and the local performance factor; maintaining a total request time for all requests in both queues and maintaining a total network time for all requests in the second queue; while the total request time is less than a predetermined first value: accepting from the application service a new pending display request to be displayed on the client device; executing the new pending display request to create an image to be displayed on a portion of a display screen of a client device, saving the resulting image to memory, and determining for the image its relative cost and its corresponding request time based the local performance factor; converting, based on the support display operations of the client device, the new pending display request into a sequence of converted requests that are supported by the client device, placing the sequence of converted requests in the first queue, determining for each converted display request its relative cost and its corresponding request time based on the local performance factor, and incrementing the total request time by the request time of each converted request added to the first queue; while the total network time is less than a predetermined second value: optimizing the first queue using a merge optimization when the request times of the pending requests in the first queue exceed a predetermined third value and updating the total request time based on the results of the merge optimization; reading a pending request from the first queue and labeling each read request with a first sequence identifier; encoding each read display request for transmission to the display engine; placing a copy of the optimized request into the second queue and incrementing the total network time value for the newly added request; and transmitting the encoded display request to the display engine; executing the display engine comprising the steps of: unencoding the received converted display request and displaying it on the client device; generating a second sequence identifier corresponding to first sequence identifier of the displayed request; and periodically transmitting to the protocol engine the second sequence identifier of the last received display request displayed on the client device; and upon receipt of the second sequence identifier of the last displayed display request, the protocol engine further comprising the steps of: deleting from the second queue the display request whose first sequence identifier is the same as the second sequence identifier and all pending displayed requests in the second queue having identifiers that are prior to such second sequence unique identifier; and decrementing from the total request time and from the total network time the request time values of each of the deleted display requests, wherein transmitting the encoded display request to the display engine includes a packet shaping data structure transformation including: if i) the total network time is equal to or greater than a current round trip time, defined by twice a current latency, and ii) the total request time minus the total network time is equal to or less than half a preset limit, then forming a shaped packet by associating a first data portion with a second data portion and a header.
Claim 97
Dependent Claim 21 words
The method of claim 91 , further comprising routing the shaped packet to a client device via the transmitted request queue.
Claim 98
Dependent Claim 17 words
The method of claim 91 , further comprising storing the shaped packet in a shaped packet buffer.
Claim 99
Dependent Claim 31 words
The method of claim 93 , further comprising routing the shaped packet from the shaped packet buffer to a client device when a capacity of the shaped packet buffer is reached.
Claim 100
Dependent Claim 53 words
The method of claim 93 , further comprising routing the shaped packet from the shaped packet buffer to a client device when i) the total network time is less than the current round trip time or ii) the total request time minus the total network time is greater than half the preset limit.
Claim 101
Dependent Claim 28 words
The method of claim 93 , further comprising routing the shaped packet from the shaped packet buffer to a client device after a period of time has passed.
Claim 102
Dependent Claim 26 words
The method of claim 91 , further comprising forming another shaped packet by associating a third data portion with a fourth data portion and another header.
Claim 103
Dependent Claim 26 words
The method of claim 97 , further comprising routing the shaped packet and the another shaped packet to a client device via the transmitted request queue.
Claim 104
Dependent Claim 22 words
The method of claim 97 , further comprising storing the shaped packet and the another shaped packet in a shaped packet buffer.
Claim 105
Dependent Claim 36 words
The method of claim 99 , further comprising routing the shaped packet and the another shaped packet from the shaped packet buffer to a client device when a capacity of the shaped packet buffer is reached.
Claim 106
Dependent Claim 53 words
The method of claim 99 , further comprising routing the shaped packet from the shaped packet buffer to a client device when i) the total network time is less than the current round trip time or ii) the total request time minus the total network time is greater than half the preset limit.
Claim 107
Dependent Claim 28 words
The method of claim 99 , further comprising routing the shaped packet from the shaped packet buffer to a client device after a period of time has passed.
Claim 108
Dependent Claim 19 words
A computer program, comprising computer or machine readable program elements translatable for implementing the method of claim 91 .
Claim 109
Dependent Claim 14 words
An electronic media, comprising a program for performing the method of claim 91 .
Claim 110
Dependent Claim 10 words
An apparatus for performing the method of claim 91 .
Claim 111
Dependent Claim 27 words
The method of claim 91 wherein the relative cost comprises a predetermined fixed basic operation cost and a localized cost per pixel calculated for the client device.
Claim 112
Dependent Claim 27 words
The method of claim 91 wherein the optimization of the first queue further comprises the step of performing a pruning optimization prior to performing the merge optimization.
Claim 113
Dependent Claim 24 words
The method of claim 107 wherein the optimization of the first queue further comprises performing an update scheduling optimization and an attribute scheduling optimization.
Claim 114
Dependent Claim 24 words
The method of claim 91 wherein the optimization of the first queue further comprises performing an update scheduling optimization and an attribute scheduling optimization.
Claim 115
Dependent Claim 43 words
The method of claim 91 wherein the encoding further comprises the steps of: performing coordinate compression; performing run length encoding compression; serializing the coordinate compressed and run length encode compressed request into fixed byte ordered strings; performing delta compression; and performing Zlib compression.
Claim 116
Dependent Claim 186 words
The method of claim 110 wherein the encoding further comprises the steps of: omitting the steps of run length encoding and delta compression if the bandwidth of the connection to the display engine greater than about 300 Kbytes per second; applying the steps of run length encoding and delta compression if the bandwidth of the connection to the display engine is less than about 300 Kbytes per second; omitting Zlib compression if the bandwidth of the connection to the display engine is greater than about 300 Kbytes per second; setting the ZLib compression to its lowest and quickest compression level if the bandwidth of the connection to the display engine is between about 100 Kbytes to about 300 Kbytes per second; setting the ZLib compression to a midrange compression level between its highest and lowest compression levels if the bandwidth of the connection to the display engine is between about 3 Kbytes to about 100 Kbytes per second; and setting the ZLib compression to its highest compression level if the bandwidth of the connection to the display engine is less than about 3 Kbytes per second.
Claim 117
Dependent Claim 27 words
The method of claim 111 further comprising: periodically updating the bandwidth and latency parameters; and using the updated connection parameters to determine the level of encoding used.
Claim 118
Dependent Claim 156 words
The method of claim 111 further comprising: periodically updating the client device local performance factor parameter and using the updated performance factor to update the request times of pending requests received after the updating has occurred; on moving a pending request from the first queue to the second queue adding to the request an time estimate of the time when that request should be removed from the second queue based on the updated local performance factor; on removing the request from the second queue, maintaining a running average and variance for the percentage error for the estimated time as compared to the actual time that the request was removed, and, if the total of the average error minus half of the variance exceeds a pre-set limit and the time since the last update is more then 1 minute then immediately repeating the steps of updating the connection parameters and the client device local performance factor parameter.
Claim 119
Dependent Claim 26 words
The method of claim 111 wherein the updated local performance is used to update the request times of the requests in the first and second queues.
Claim 120
Dependent Claim 26 words
The method of claim 91 further comprising: periodically updating the bandwidth and latency parameters; and using the updated parameters to determine the level of encoding used.
Claim 121
Dependent Claim 35 words
The method of claim 91 wherein the predetermined first value is about five seconds, the predetermined second value is about two seconds, and the predetermined third value is about 1/20 of the predetermined first value.
Claim 122
Dependent Claim 906 words
In a client server network providing at least one application service for selection by a user via a client device, a method for transmitting to and displaying on the display device of the client device display requests of the requested application service which are not supported by the client device, comprising: downloading from the server and executing on the client device a display engine associated with the application service requested by the user; loading on a server in the network a protocol engine in communication with the display engine and the requested application service; providing to the display a table of display operations expected to be supported by the client device on which the display engine is executing; using the display engine to determine parameters of the client device comprising: testing the operation of each of the expected display operations on the client device and modifying the table to indicate which of the expected display operations was successfully tested; determining a local performance factor for the client device; and determining parameters of the connection from the server to the display engine comprising bandwidth and latency; transmitting to and initializing the protocol engine with the client device parameters and the connection parameters as determined by the display engine; executing the protocol engine comprising the steps of: maintaining a first queue for retaining pending display requests and a second queue for retaining transmitted display requests of the requested application service for display on the client device; each request having a corresponding relative cost and request time determined by the relative cost and the local performance factor; maintaining a total request time for all requests in both queues and maintaining a total network time for all requests in the second queue; while the total request time is less than a predetermined first value: accepting from the application service a new pending display request to be displayed on the client device; executing the new pending display request to create an image to be displayed on a portion of a display screen of a client device, saving the resulting image to memory, and determining for the image its relative cost and its corresponding request time based the local performance factor; converting, based on the support display operations of the client device, the new pending display request into a sequence of converted requests that are supported by the client device, placing the sequence of converted requests in the first queue, determining for each converted display request its relative cost and its corresponding request time based on the local performance factor, and incrementing the total request time by the request time of each converted request added to the first queue; while the total network time is less than a predetermined second value: optimizing the first queue when the request times of the pending requests in the first queue exceed a predetermined third value by comparing the relative cost of the image to the sum of the relative costs of pending converted display requests in the first queue intended for display on the same portion of the display device of the client device as the image, and, if the relative cost of the image is less than the sum of the relative costs of the compared pending display requests: converting the image into a converted image request and determining its relative cost and its request time based on the local performance factor; replacing in the first queue the compared pending converted display requests with the converted image display request; and adjusting the total request time to reflect the addition of the converted image request and removal of the compared pending requests in the first queue; reading a pending request from the first queue and labeling each read request with a first sequence identifier; encoding each read display request for transmission to the display engine based on the bandwidth of the connection; placing a copy of the optimized request into the second queue and incrementing the total network time value for the newly added request; and transmitting the encoded display request to the display engine; using the display engine to process the received encoded display requests comprising the steps of: unencoding the converted display request and displaying it on the client device; generating a second sequence identifier corresponding to first sequence identifier of the displayed request; and periodically transmitting to the protocol engine the second sequence identifier of the last display request displayed on the client device; and upon receipt of the second sequence identifier of the last displayed display request, the protocol engine further comprising the steps of: deleting from the second queue the display request whose first sequence identifier is equal to the second sequence identifier and all pending displayed requests in the second queue having first sequence identifiers that are prior to such second sequence identifier; and decrementing from the total request time value and from the total network time value the time values of each of the deleted display requests, wherein transmitting the encoded display request to the display engine includes a packet shaping data structure transformation including: if i) the total network time is equal to or greater than a current round trip time, defined by twice a current latency, and ii) the total request time minus the total network time is equal to or less than half a preset limit, then forming a shaped packet by associating a first data portion with a second data portion and a header.
Claim 123
Dependent Claim 906 words
In a client server network providing at least one application service for selection by a user via a client device, a method for transmitting to and displaying on the display device of the client device display requests of the requested application service which are not supported by the client device, comprising: downloading from the server and executing on the client device a display engine associated with the application service requested by the user; loading on a server in the network a protocol engine in communication with the display engine and the requested application service; providing to the display a table of display operations expected to be supported by the client device on which the display engine is executing; using the display engine to determine parameters of the client device comprising: testing the operation of each of the expected display operations on the client device and modifying the table to indicate which of the expected display operations was successfully tested; determining a local performance factor for the client device; and determining parameters of the connection from the server to the display engine comprising bandwidth and latency; transmitting to and initializing the protocol engine with the client device parameters and the connection parameters as determined by the display engine; executing the protocol engine comprising the steps of: maintaining a first queue for retaining pending display requests and a second queue for retaining transmitted display requests of the requested application service for display on the client device; each request having a corresponding relative cost and request time determined by the relative cost and the local performance factor; maintaining a total request time for all requests in both queues and maintaining a total network time for all requests in the second queue; while the total request time is less than a predetermined first value: accepting from the application service a new pending display request to be displayed on the client device; executing the new pending display request to create an image to be displayed on a portion of a display screen of a client device, saving the resulting image to memory, and determining for the image its relative cost and its corresponding request time based the local performance factor; converting, based on the support display operations of the client device, the new pending display request into a sequence of converted requests that are supported by the client device, placing the sequence of converted requests in the first queue, determining for each converted display request its relative cost and its corresponding request time based on the local performance factor, and incrementing the total request time by the request time of each converted request added to the first queue; while the total network time is less than a predetermined second value: optimizing the first queue when the request times of the pending requests in the first queue exceed a predetermined third value by comparing the relative cost of the image to the sum of the relative costs of pending converted display requests in the first queue intended for display on the same portion of the display device of the client device as the image, and, if the relative cost of the image is less than the sum of the relative costs of the compared pending display requests: converting the image into a converted image request and determining its relative cost and its request time based on the local performance factor; replacing in the first queue the compared pending converted display requests with the converted image display request; and adjusting the total request time to reflect the addition of the converted image request and removal of the compared pending requests in the first queue; reading a pending request from the first queue and labeling each read request with a first sequence identifier; encoding each read display request for transmission to the display engine based on the bandwidth of the connection; placing a copy of the optimized request into the second queue and incrementing the total network time value for the newly added request; and transmitting the encoded display request to the display engine; using the display engine to process the received encoded display requests comprising the steps of: unencoding the converted display request and displaying it on the client device; generating a second sequence identifier corresponding to first sequence identifier of the displayed request; and periodically transmitting to the protocol engine the second sequence identifier of the last display request displayed on the client device; and upon receipt of the second sequence identifier of the last displayed display request, the protocol engine further comprising the steps of: deleting from the second queue the display request whose first sequence identifier is equal to the second sequence identifier and all pending displayed requests in the second queue having first sequence identifiers that are prior to such second sequence identifier; and decrementing from the total request time value and from the total network time value the time values of each of the deleted display requests, wherein transmitting the encoded display request to the display engine includes a packet shaping data structure transformation including: if i) the total network time is equal to or greater than a current round trip time, defined by twice a current latency, and ii) the total request time minus the total network time is equal to or less than half a preset limit, then forming a shaped packet by associating a first data portion with a second data portion and a header.
Claim 124
Dependent Claim 21 words
The method of claim 117 , further comprising routing the shaped packet to a client device via the transmitted request queue.
Claim 125
Dependent Claim 17 words
The method of claim 117 , further comprising storing the shaped packet in a shaped packet buffer.
Claim 126
Dependent Claim 31 words
The method of claim 119 , further comprising routing the shaped packet from the shaped packet buffer to a client device when a capacity of the shaped packet buffer is reached.
Claim 127
Dependent Claim 53 words
The method of claim 119 , further comprising routing the shaped packet from the shaped packet buffer to a client device when i) the total network time is less than the current round trip time or ii) the total request time minus the total network time is greater than half the preset limit.
Claim 128
Dependent Claim 28 words
The method of claim 119 , further comprising routing the shaped packet from the shaped packet buffer to a client device after a period of time has passed.
Claim 129
Dependent Claim 26 words
The method of claim 117 , further comprising forming another shaped packet by associating a third data portion with a fourth data portion and another header.
Claim 130
Dependent Claim 26 words
The method of claim 123 , further comprising routing the shaped packet and the another shaped packet to a client device via the transmitted request queue.
Claim 131
Dependent Claim 22 words
The method of claim 123 , further comprising storing the shaped packet and the another shaped packet in a shaped packet buffer.
Claim 132
Dependent Claim 36 words
The method of claim 125 , further comprising routing the shaped packet and the another shaped packet from the shaped packet buffer to a client device when a capacity of the shaped packet buffer is reached.
Claim 133
Dependent Claim 53 words
The method of claim 125 , further comprising routing the shaped packet from the shaped packet buffer to a client device when i) the total network time is less than the current round trip time or ii) the total request time minus the total network time is greater than half the preset limit.
Claim 134
Dependent Claim 28 words
The method of claim 125 , further comprising routing the shaped packet from the shaped packet buffer to a client device after a period of time has passed.
Claim 135
Dependent Claim 19 words
A computer program, comprising computer or machine readable program elements translatable for implementing the method of claim 117 .
Claim 136
Dependent Claim 14 words
An electronic media, comprising a program for performing the method of claim 117 .
Claim 137
Dependent Claim 10 words
An apparatus for performing the method of claim 117 .
Claim 138
Dependent Claim 32 words
The method of claim 117 wherein the relative cost comprises a predetermined fixed basic operation cost and a localized per pixel cost based on a performance factor calculated for the client device.
Claim 139
Dependent Claim 28 words
The method of claim 117 wherein the optimization of the first queue further comprises the step of performing a pruning optimization prior to performing the step of optimization.
Claim 140
Dependent Claim 24 words
The method of claim 133 wherein the optimization of the first queue further comprises performing an update scheduling optimization and an attribute scheduling optimization.
Claim 141
Dependent Claim 24 words
The method of claim 116 wherein the optimization of the first queue further comprises performing an update scheduling optimization and an attribute scheduling optimization.
Claim 142
Dependent Claim 43 words
The method of claim 117 wherein the encoding further comprises the steps of performing coordinate compression; performing run length encoding compression; serializing the coordinate compressed and run length encode compressed request into fixed byte ordered strings; performing delta compression; and performing Zlib compression.
Claim 143
Dependent Claim 186 words
The method of claim 117 wherein the encoding further comprises the steps of: omitting the steps of run length encoding and delta compression if the bandwidth of the connection to the display engine greater than about 300 Kbytes per second; applying the steps of run length encoding and delta compression if the bandwidth of the connection to the display engine is less than about 300 Kbytes per second; omitting Zlib compression if the bandwidth of the connection to the display engine is greater than about 300 Kbytes per second; setting the Zlib compression to its lowest and quickest compression level if the bandwidth of the connection to the display engine is between about 100 Kbytes to about 300 Kbytes per second; setting the Zlib compression to a midrange compression level between the lowest and highest compression levels if the bandwidth of the connection to the display engine is between about 3 Kbytes to about 100 Kbytes per second; and setting the Zlib compression to its highest compression level if the bandwidth of the connection to the display engine is less than about 3 Kbytes per second.
Claim 144
Dependent Claim 156 words
The method of claim 117 further comprising: periodically updating the client device local performance factor parameter and using the updated performance factor to update the request times of pending requests received after the updating has occurred; on moving a pending request from the first queue to the second queue adding to the request an time estimate of the time when that request should be removed from the second queue based on the updated local performance factor; on removing the request from the second queue, maintaining a running average and variance for the percentage error for the estimated time as compared to the actual time that the request was removed, and, if the total of the average error minus half of the variance exceeds a pre-set limit and the time since the last update is more then 1 minute then immediately repeating the steps of updating the connection parameters and the client device local performance factor parameter.
Claim 145
Dependent Claim 26 words
The method of claim 117 wherein the updated local performance is used to update the request times of the requests in the first and second queues.
Claim 146
Dependent Claim 35 words
The method of claim 117 wherein the predetermined first value is about five seconds, the predetermined second value is about two seconds, and the predetermined third value is about 1/20 of the predetermined first value.

References Cited (Backward Citations)

US5740801A Cited
US5838916A Cited
US5754830A Cited
US5796942A Cited
US5999882A Cited
US5991806A Cited
US6225995B1 Cited
US6104392A Cited
US6362836B1 Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2008-08-01 2009-01-31 2009-08-02 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2012-08-01 2013-01-31 2013-08-02 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2016-08-01 2017-01-31 2017-08-02 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag