US20070171982A1 - Methods for encoding digital video for decoding on low performance devices - Google Patents

Methods for encoding digital video for decoding on low performance devices Download PDF

Info

Publication number
US20070171982A1
US20070171982A1 US11/469,118 US46911806A US2007171982A1 US 20070171982 A1 US20070171982 A1 US 20070171982A1 US 46911806 A US46911806 A US 46911806A US 2007171982 A1 US2007171982 A1 US 2007171982A1
Authority
US
United States
Prior art keywords
frame
video
blocks
frames
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US11/469,118
Inventor
Jens Meggers
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nordic Interactive Technologies LLC
Wimaximum LLC
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to US11/469,118 priority Critical patent/US20070171982A1/en
Assigned to WIMAXIMUM, LLC reassignment WIMAXIMUM, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: FIREPAD, INC.
Assigned to FIREPAD, INC. reassignment FIREPAD, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MEGGERS, JENS
Publication of US20070171982A1 publication Critical patent/US20070171982A1/en
Assigned to NORDIC INTERACTIVE TECHNOLOGIES LLC reassignment NORDIC INTERACTIVE TECHNOLOGIES LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: INTELLECTUAL VENTURES ASSETS 79 LLC
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/507Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction using conditional replenishment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression

Definitions

  • This Invention relates generally to video encoding/decoding methods and more particularly to video encoding/decoding methods for use in conjunction with low bandwidth connections and low performance devices.
  • Video streams are regularly encoded, transmitted over computer networks, and decoded and displayed on desktop computers. Web browsers and the World Wide Web have facilitated access to and presentation of video media. The recent combination of the palmtop computing device and wireless access to the Internet has provided a basic platform for wireless web browsing. Lower bandwidths and processing performances, however, make conventional encoding and streaming techniques inapplicable for streaming video to wirelessly connected palmtop devices.
  • a typical PalmOS device has a 160.times.160 pixel frame, in which case 70,400 multiplications are needed.
  • a 68000 series microprocessor needs roughly 80 cycles for a single multiplication.
  • a microprocessor running at 20 MHz takes approximately 0.28 seconds to perform these multiplications, leading to a frame rate about 3 frames per second.
  • This calculation assumes the worst case.
  • Higher frame rates may be theoretically achieved by reducing the video frame size, limiting the number of colors, and/or reducing the video quality by means of DCT vector quantisation.
  • Shortcuts in the Chen-Wang algorithm can benefit from vectors that equal zero. Nevertheless, the given approximation of the decoding delay does not include the adds and the additional DCT vectors needed for color videos.
  • Prototype implementations have shown that the decoding delay for a full screen video frame in photo quality is at least 1.5 seconds.
  • block-based motion compensation is an entirely different category of video compression from block-based difference encoding.
  • Motion compensation has little relevance under low-performance computing conditions, because the client-side vector algebra required for computing image region translations based on arbitrary vectors is too multiplication-intensive for low performance client devices.
  • inventions such as Krause (U.S. Pat. No. 5,235,419) cannot be applied under these conditions, nor can they be modified to resemble block-based difference encoding methods.
  • the embodiments of the invention seek to provide video encoding techniques and formats that are well-suited to decoding by low-performance devices, such as a PalmOS device, and that is well-suited to transmission over low-bandwidth links, such as wireless networks.
  • the invention provides a method and a system to encode a video stream comprising a series of frames.
  • the video stream is encoded by a video encoder that runs on a server.
  • the encoded video is then transmitted over a communication link to a client device whereupon a decoder decodes and displays the video stream.
  • the video encoder encodes the video stream frame by frame.
  • Encoding process generally includes receiving a video frame, subdividing the video frame into uniform pixel blocks, comparing a selected pixel block with the corresponding pixel block in a previous decoded video frame to determine which blocks have changed, copying changed pixel blocks Into a contiguous memory block, adding a preamble block, compressing the blocks, and repeating this process to determine and select a pixel block size that results in the smallest encoded frame.
  • the video encoder logically divides each video frame into uniform block sizes. Each of these uniform pixel blocks is compared with the corresponding pixel block from the previous decoded video frame to determine if there are any significant differences. If so, the encoder deletes the block out of the encoded video frame.
  • the pixel blocks that have not been deleted are copied into a continuous memory block.
  • a preamble block indicating the layout of the memory block is then added.
  • the resulting packet comprising the preamble block and the memory block is thereafter compressed.
  • a video frame is encoded using different block sizes to choose the block size that results in smallest encoded frame.
  • Encoded video frame is thereafter sent over a network via a communication link to a client device.
  • a decoder in the client device decodes and displays the decoded video frame using a corresponding decoding method.
  • FIG. 1 illustrates a video encoding system at a general level.
  • FIG. 2 illustrates a set of components for implementing the video encoding process.
  • FIG. 3 illustrates a method performed by the video encoder.
  • FIG. 4 Illustrates a method of determining what block size to use.
  • FIG. 5 illustrates a method performed by the decoder.
  • FIG. 1 illustrates a system 100 in accordance with which an input video stream 110 can be encoded and streamed to a client device 140 .
  • a proxy server 114 receives the input video stream 110 from a source (another server, for example) on the Internet or any other source from which a video input stream can be obtained.
  • the proxy server 114 can include or execute in conjunction with a video encoder 120 , which encodes the input video signal into an encoded stream 130 for transmission to the client device 140 .
  • the communication link 134 between the proxy server 114 and the client device can be a wireless Internet connection via a wireless modem. Wireless modems that communicate through cellular telephone technology are presently available for many palmtop devices.
  • the proxy server-client device communication link 134 may alternatively be a land-line modem connection or another type of connection.
  • the client device 140 can be a palmtop device, such as a Palm Pilot or a Handspring Visor running the PalmOS operating system. PalmOS devices generally provide a 160.times.160 pixel grayscale or color screen upon which video can be displayed.
  • the client device 140 may, however, be any other device that can be configured to decode and display video, such as a desktop computer.
  • the client device 140 includes a decoder 150 , which decodes the encoded stream 130 for display on a display screen of the client device.
  • the decoder 150 is can be a software module that executes on the client device 140 , but the decoder 150 may be embodied as a hardware module that is integrated into the client device 140 .
  • video is decoded and displayed by the client device 140 as it is received.
  • encoded video is downloaded to a client device and stored for subsequent display.
  • the input stream 110 may be in any form and can be converted by the encoder 120 using conventional techniques into a format suitable for encoding in accordance with one embodiment.
  • the input video stream 110 may, for example, be any type of previously compressed or uncompressed video stream or feed, such as, for example RGB16, RGB24.
  • the video stream 110 can be obtained, for example, from AVI files, from various video transmitter applications, or from frame grabber software interfaces.
  • the video encoder 120 can be configured to process all of these types of video streams as well as a variety of other video stream formats.
  • FIG. 2 is a high level depiction of an encoding method 200 in accordance with one embodiment of the invention.
  • a video source frame 212 is broken into a set of blocks 214 .
  • each block 214 is compared with the corresponding block in the previous video source frame 210 and the blocks (changed blocks 222 ) that have changed more than a minimum amount in relation to the previously encoded frame are identified.
  • the blocks that have not changed more than a minimum amount (unchanged blocks 224 ) are not identified and may be discarded.
  • the identified blocks 222 are copied or moved Into a contiguous block of memory 232 and a preamble block 234 is prepended to the set of blocks to identify the locations of the identified blocks 222 within the frame 210 .
  • the contiguous block of memory containing the identified blocks 222 and the preamble 234 is compressed using a compression algorithm to create a compressed frame 242 .
  • the compressed frame 242 can then be transmitted to the client device 140 and decompressed by generally reversing the compression steps.
  • FIG. 3 illustrates, in additional detail, a method 300 for encoding video in accordance with one embodiment of the invention.
  • the method 300 can be performed by the video encoder 120 in accordance with the system 100 , but the method 300 may be performed by other devices in other contexts as well.
  • a video frame is input and can be converted or transformed to a desired display resolution, size, and format.
  • the frame m y be converted to a 160.times.160 pixel or smaller color or greyscale image.
  • Color images can be transformed into YUV format, which is more effectively compressed than RGB.
  • a block size is identified and the frame is divided into a number of uniform pixel blocks 214 .
  • the size of each block may range from 1.times.1 (a single pixel) to the entire size of the image (e.g. 16.0.times.160). Although all of the blocks 214 for a particular frame should be the same size, different block sizes may be used in different frames.
  • the block size is identified by an encoding parameter.
  • the block size may alternatively be identified by performing an analysis of the present frame and previously encoded frames. The determination of the block size will be discussed in additional detail below.
  • changed pixel blocks 222 are identified.
  • Each pixel block 214 is compared to the corresponding pixel block in the decoded version of the previous encoded frame. If the pixel blocks differ by at least a minimum amount, the block is identified.
  • the value F(x,y) for a can be the luminance component of the pixel.
  • T exceeds a certain threshold value, the block is identified as having changed.
  • the selection of this threshold value may depend upon the block size, the desired image quality, and the image formats, among other things. Accordingly, a block is identified as having changed when the luminance difference is too high.
  • the chrominance values generally may be ignored for the purpose of determining whether a pixel or block has changed. This is due to the human eye's higher sensitivity to luminance than to chrominance.
  • the step 340 must take into account the case where there is no previous decoded video frame, such as when the first frame of a sequence is encoded. In this case, all of the blocks of the frame are identified as changed.
  • the identified pixel blocks are copied or moved into a contiguous block of memory.
  • the pixel bocks that do not have at least a minimum difference are therefore discarded.
  • the pixel blocks that are not identified are deleted from the frame and the remaining blocks moved into a contiguous memory space.
  • the video encoder 120 adds a preamble block to the contiguous block of memory to provide an identification, within the encoded frame, of the pixel blocks that have been identified.
  • the preamble block indicates whether a particular pixel block is included in the compressed representation of the video frame.
  • the preamble block includes a layout of the memory block to enable the decoding of the video frame by the decoder 150 .
  • the preamble block also indicates the block size that was used to encode a particular video frame. There can be one preamble block for each frame.
  • the preamble block contains one “present” bit for each pixel block in the frame.
  • the “present” bit specifies whether the corresponding pixel block is present or included in the encoded frame.
  • the “present” bits can be arranged, for example, in a memory block of 10 words of 16 bits each, where the last 6 bits of each word are not used.
  • the 5.sup.th bit of the 3.sup.rd word is set to 1
  • the 5.sup.th block in the 3.sup.rd row has been identified and included, meaning that the block is present in the encoded representation of the video frame.
  • Other configurations which may utilize some or all of the bits in a memory block, may alternatively be used.
  • the video encoder 120 compresses the contiguous block of memory to form a compressed frame 242 .
  • This compression step results in compressing both the preamble block 234 and the pixel blocks 222 .
  • the memory block can be compressed by any of a variety of compression algorithms.
  • the block is compressed by an LZW-like compression algorithm.
  • zLib compression algorithm is used.
  • LZO compression algorithm is used. Different compression algorithms can be used depending on the target client device. Certain decompression algorithms can be more effectively run on certain client devices.
  • the compressed video frame 242 can then be streamed or transmitted to the client device for decoding and display.
  • encoded frames are partitioned into packets that are transmitted to the decoding device in accordance with known techniques.
  • the selection of block size to encode a particular video frame is based on which block size produces the best result.
  • the best result may be produced when the size of the encoded video frame is the smallest thereby minimizing the amount of data that need to be transferred to and decoded by the client device 140 .
  • FIG. 4 Illustrates a method 400 of selecting a block size to produce the best result.
  • This method can be used in conjunction with any block-based video encoding method.
  • the size of the block used to encode a frame can substantially affect the resulting size of the encoded frame. For example, in a video sequence with a significant amount of motion, it may be advantageous to use a smaller block size because fewer changed pixels may need to be Included in the encoded video frame. Therefore, the number of changed pixels that need to be included in the contiguous memory block 232 can be reduced. A larger block size may unnecessarily include additional pixels that may not have changed since the last frame.
  • the size of the preamble block increases as the block size decreases since more bits are required to indicate whether a particular pixel block is included in the compressed representation of the video.
  • the advantages of using a smaller block size must be weighed against the increased overhead in determining which block size produces the best result.
  • a video frame is encoded in accordance with method 300 using the 16.times.16 block size.
  • the same frame is encoded again using the next smaller block size of 8.times.8.
  • a determination as to which size produces better result is made.
  • a determination as to which block size produces the best result is made by comparing the final compressed video frame.
  • a comparison is made of the final sizes of the encoded representations of the video frame. For example, the final size of the encoded video frame using a 16.times.16 block size is compared with the final size of the encoded video frame using a 8.times.8 block size. If the encoded video frame using the 8.times.8 block size is smaller than the encoded video frame using the 16.times.16 block size, control returns to step 430 to encode the same frame again using even a smaller block size of 4.times.4.
  • step 460 the smallest block size that results in improvement is used to encode the video frame.
  • a block size in the middle of the range of possible block sizes may be compared to the next larger and the next smaller block sizes. If the best result is produced by the middle block size then the process ends and the middle block size is used. If the best result is produced by the next larger block size, the second next larger block size is then considered and so on. If the best result is produced by the next small block size, the second next smaller block size is then considered and so on.
  • a data table can be calculated in advance that allows the identification of the block size that results in the smallest contiguous block of memory after the preamble block is prepended to the changed blocks.
  • the data table lists the required reduction in the number of identified blocks for each transition from a block size to a next smaller block size.
  • One method starts with the largest block size. The method iteratively examines each smaller block size to determine if the requisite reduction in the number of identified blocks is provided. If the requisite reduction is not provided by the next smaller block size, then the larger block size will produce a smaller contiguous block of memory. Generally, a smaller contiguous block of memory will result in a smaller compressed block of memory (compressed frame 242 ).
  • FIG. 5 illustrates a method 500 performed by the decoder 150 included in the client device 140 .
  • the decoder 150 maintains a working video frame that maintains the image that is displayed.
  • the decoder 150 iterates through the method 500 to decode each encoded frame.
  • the decoder receives the compressed frame 242 containing the compressed preamble block and the memory block.
  • the decoder decompresses the compressed frame 242 .
  • the step 520 reproduces the uncompressed version of the contiguous memory block containing the preamble block and the pixel blocks.
  • the uncompressed version of the contiguous memory block can be identical to the memory block produced in the step 360 of the method 300 .
  • the decoder reads the preamble block to determine what block size was used to encode the frame and to determine which pixel blocks are present in the contiguous memory block.
  • the decoder reads the bit sequences in the preamble block and copies the identified pixel blocks into the corresponding video frame to be displayed.
  • the decoder displays the working video frame, which is displayed by the client device 140 .
  • the decoder 150 may start with an empty working frame or a working frame with old/stale data. Nevertheless, since the first frame in a sequence will contain all of the pixels in the frame, all of the pixels in the working frame will be updated.
  • Key frames are encoded frames about which the decoding of a sequence of frames can begin. Accordingly, a sequence can be decoded starting at a location other than its beginning. Key frames also provide the ability to seek forward and backward within a video sequence. A key frame is generally inserted at fixed time intervals in a video sequence, such as every second. Without key frames, decoding generally cannot be initiated in the middle of a sequence of encoded frames since each encoded frame may rely upon data in any number of preceding decoded frames. If decoding is initiated at a point other than the beginning of a sequence, the preceding decoded frames may not be available.
  • a key frame contains sufficient information to allow a full frame to be produced using only the encoded key frame and a limited number of preceding encoded frames.
  • a key frame may be configured to rely upon zero preceding frames in which case the key frame is encoded in the same way as the initial frame in a sequence by assuming all pixels have changed.
  • a key frame may alternatively be configured to rely upon one or more preceding frames (hereinafter “associated frames”).
  • associated frames hereinafter “associated frames”.
  • the encoding of a key frame can be performed using the method 300 , but with a modified step 340 in which the changed pixel blocks are identified. Each pixel block that is not identified as changed In at least one of the associated frames is identified as changed during the encoding of the key frame.
  • each pixel block in the working frame is provided by at least one of the key frame and the associated frames.
  • Each key frame can be identified as a key frame and the associated frames upon which the key frame depends are can also identified. This identification information can also be incorporated into the preamble block.
  • a key frame that does not have associated frames can be decoded using the method 500 .
  • the associated frames are first decoded and their pixel data inserted into the working frame.
  • the key frame is then decoded and its pixel data inserted into the working frame. Since the key frame provides all the pixels that are not provided by the associated frames, each of the pixels in the working frame is supplied with data by either the key frame or the associated frames.
  • the key frame can be configured to precede rather than follow the associated frames.

Abstract

A video encoder encodes the video stream frame by frame. An encoding process generally includes receiving a video frame, subdividing the video frame into uniform pixel blocks, comparing a selected pixel block with the corresponding pixel block in a previous decoded video frame to determine which blocks have changed, copying changed pixel blocks into a contiguous memory block, and adding a preamble block, compressing the blocks. This process may be repeated for each frame using a different size pixel block to determine and select a pixel block size that results in the smallest encoded frame.

Description

    BACKGROUND OF THE INVENTION
  • 1. Field of the Invention
  • This Invention relates generally to video encoding/decoding methods and more particularly to video encoding/decoding methods for use in conjunction with low bandwidth connections and low performance devices.
  • 2. Description of the Related Art
  • Video streams are regularly encoded, transmitted over computer networks, and decoded and displayed on desktop computers. Web browsers and the World Wide Web have facilitated access to and presentation of video media. The recent combination of the palmtop computing device and wireless access to the Internet has provided a basic platform for wireless web browsing. Lower bandwidths and processing performances, however, make conventional encoding and streaming techniques inapplicable for streaming video to wirelessly connected palmtop devices.
  • State of the art video compression standards such as H.261, H.263, MPEG1/2/4 and M-J PEG are based on either Discrete Cosine Transform (DCT) or Wavelet Transformation. Prototype implementations with H.263 and a Custom DCT codec have shown that the DCT decoding process is too slow on current Palm Operating System (“PalmOS”) platforms. The same holds for the Wavelet transformations. A principal reason for this is the large number of multiplications required for decoding. Typical implementations use the Chen-Wang algorithm (IEEE ASSP-32, pp. 803-816, August 1984). In the worst case, this algorithm requires 176 multiplications and 464 adds per 8.times.8 pixel block. A typical PalmOS device has a 160.times.160 pixel frame, in which case 70,400 multiplications are needed. A 68000 series microprocessor needs roughly 80 cycles for a single multiplication. Thus, a microprocessor running at 20 MHz takes approximately 0.28 seconds to perform these multiplications, leading to a frame rate about 3 frames per second. This calculation, however, assumes the worst case. Higher frame rates may be theoretically achieved by reducing the video frame size, limiting the number of colors, and/or reducing the video quality by means of DCT vector quantisation. Shortcuts in the Chen-Wang algorithm can benefit from vectors that equal zero. Nevertheless, the given approximation of the decoding delay does not include the adds and the additional DCT vectors needed for color videos. Prototype implementations have shown that the decoding delay for a full screen video frame in photo quality is at least 1.5 seconds.
  • In general, a more realistic solution for very low-performance client devices is block-based difference encoding, because of its low computing demands on the decoding client device. However, it is generally accepted by those skilled in art that the, central challenge in such algorithms is to select an optimal encoding block size. Quoting from New Media Republic's description of interface video encoding (see article http://www.newmediarepublic.com/dvideo/compression/adv07.html, by Collin Manning, lecturer In computer science at Cork Institute of Technology, included herein as an exhibit), Clearly the choice of block size must be an informed one so as to achieve the best balance between image quality and cession.
  • Please note that block-based motion compensation is an entirely different category of video compression from block-based difference encoding. Motion compensation has little relevance under low-performance computing conditions, because the client-side vector algebra required for computing image region translations based on arbitrary vectors is too multiplication-intensive for low performance client devices. As a result, inventions such as Krause (U.S. Pat. No. 5,235,419) cannot be applied under these conditions, nor can they be modified to resemble block-based difference encoding methods.
  • For a succinct description of the differences between block-based difference coding and block-based motion compensation, refer to the aforementioned Manning article.
  • The embodiments of the invention seek to provide video encoding techniques and formats that are well-suited to decoding by low-performance devices, such as a PalmOS device, and that is well-suited to transmission over low-bandwidth links, such as wireless networks.
  • SUMMARY OF THE INVENTION
  • Generally, the invention provides a method and a system to encode a video stream comprising a series of frames. The video stream is encoded by a video encoder that runs on a server. The encoded video is then transmitted over a communication link to a client device whereupon a decoder decodes and displays the video stream.
  • The video encoder encodes the video stream frame by frame. Encoding process generally includes receiving a video frame, subdividing the video frame into uniform pixel blocks, comparing a selected pixel block with the corresponding pixel block in a previous decoded video frame to determine which blocks have changed, copying changed pixel blocks Into a contiguous memory block, adding a preamble block, compressing the blocks, and repeating this process to determine and select a pixel block size that results in the smallest encoded frame.
  • First, the video encoder logically divides each video frame into uniform block sizes. Each of these uniform pixel blocks is compared with the corresponding pixel block from the previous decoded video frame to determine if there are any significant differences. If so, the encoder deletes the block out of the encoded video frame.
  • After completing the block by block comparison, the pixel blocks that have not been deleted are copied into a continuous memory block. A preamble block indicating the layout of the memory block is then added. The resulting packet comprising the preamble block and the memory block is thereafter compressed. In an embodiment, a video frame is encoded using different block sizes to choose the block size that results in smallest encoded frame.
  • Encoded video frame is thereafter sent over a network via a communication link to a client device. A decoder in the client device decodes and displays the decoded video frame using a corresponding decoding method.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 illustrates a video encoding system at a general level.
  • FIG. 2 illustrates a set of components for implementing the video encoding process.
  • FIG. 3 illustrates a method performed by the video encoder.
  • FIG. 4 Illustrates a method of determining what block size to use.
  • FIG. 5 illustrates a method performed by the decoder.
  • DETAILED DESCRIPTION OF THE EMBODIMENTS
  • In the following description, reference is made to the accompanying drawings, which form a part hereof, and which show, by way of illustration, specific embodiments or processes in which the invention may be practiced. Where possible, the same reference numbers are used throughout the drawings to refer to the same or like components. In some instances, numerous specific details are set forth in order to provide a thorough understanding of the various embodiments. The present invention, however, may be practiced without the specific details or with certain alternative equivalent devices and methods to those described herein. In other instances, well-known methods and devices have not been described in detail so as not to unnecessarily obscure aspects of the present invention.
  • I. System Overview
  • FIG. 1 illustrates a system 100 in accordance with which an input video stream 110 can be encoded and streamed to a client device 140. A proxy server 114 receives the input video stream 110 from a source (another server, for example) on the Internet or any other source from which a video input stream can be obtained. The proxy server 114 can include or execute in conjunction with a video encoder 120, which encodes the input video signal into an encoded stream 130 for transmission to the client device 140. The communication link 134 between the proxy server 114 and the client device can be a wireless Internet connection via a wireless modem. Wireless modems that communicate through cellular telephone technology are presently available for many palmtop devices. The proxy server-client device communication link 134 may alternatively be a land-line modem connection or another type of connection.
  • The client device 140 can be a palmtop device, such as a Palm Pilot or a Handspring Visor running the PalmOS operating system. PalmOS devices generally provide a 160.times.160 pixel grayscale or color screen upon which video can be displayed. The client device 140 may, however, be any other device that can be configured to decode and display video, such as a desktop computer. The client device 140 includes a decoder 150, which decodes the encoded stream 130 for display on a display screen of the client device. The decoder 150 is can be a software module that executes on the client device 140, but the decoder 150 may be embodied as a hardware module that is integrated into the client device 140.
  • In one example configuration, video is decoded and displayed by the client device 140 as it is received. In an alternative configuration, encoded video is downloaded to a client device and stored for subsequent display.
  • The input stream 110 may be in any form and can be converted by the encoder 120 using conventional techniques into a format suitable for encoding in accordance with one embodiment. The input video stream 110 may, for example, be any type of previously compressed or uncompressed video stream or feed, such as, for example RGB16, RGB24. The video stream 110 can be obtained, for example, from AVI files, from various video transmitter applications, or from frame grabber software interfaces. The video encoder 120 can be configured to process all of these types of video streams as well as a variety of other video stream formats.
  • II. Encoding Method
  • FIG. 2 is a high level depiction of an encoding method 200 in accordance with one embodiment of the invention. At a first step 210, a video source frame 212 is broken into a set of blocks 214. At a block identification step 220, each block 214 is compared with the corresponding block in the previous video source frame 210 and the blocks (changed blocks 222) that have changed more than a minimum amount in relation to the previously encoded frame are identified. The blocks that have not changed more than a minimum amount (unchanged blocks 224) are not identified and may be discarded. At a crunching step 230, the identified blocks 222 are copied or moved Into a contiguous block of memory 232 and a preamble block 234 is prepended to the set of blocks to identify the locations of the identified blocks 222 within the frame 210. At a crunching step 240, the contiguous block of memory containing the identified blocks 222 and the preamble 234 is compressed using a compression algorithm to create a compressed frame 242. The compressed frame 242 can then be transmitted to the client device 140 and decompressed by generally reversing the compression steps.
  • FIG. 3 illustrates, in additional detail, a method 300 for encoding video in accordance with one embodiment of the invention. The method 300 can be performed by the video encoder 120 in accordance with the system 100, but the method 300 may be performed by other devices in other contexts as well.
  • At a step 310, a video frame is input and can be converted or transformed to a desired display resolution, size, and format. For a PalmOS device, for example, the frame m y be converted to a 160.times.160 pixel or smaller color or greyscale image. Color images can be transformed into YUV format, which is more effectively compressed than RGB.
  • At steps 320 and 330, a block size is identified and the frame is divided into a number of uniform pixel blocks 214. The size of each block may range from 1.times.1 (a single pixel) to the entire size of the image (e.g. 16.0.times.160). Although all of the blocks 214 for a particular frame should be the same size, different block sizes may be used in different frames. In one embodiment, the block size is identified by an encoding parameter. The block size may alternatively be identified by performing an analysis of the present frame and previously encoded frames. The determination of the block size will be discussed in additional detail below.
  • At a step 340, changed pixel blocks 222 are identified. Each pixel block 214 is compared to the corresponding pixel block in the decoded version of the previous encoded frame. If the pixel blocks differ by at least a minimum amount, the block is identified. In one embodiment,sa difference, T, is calculated for each frame, n in relation to a previous frame n-1, based upon the value F(x,y) for a pixel located at (x,y): T = x , y < blocksize F n ( x , y ) - F n - 1 ( x , y )
  • The value F(x,y) for a can be the luminance component of the pixel. When T exceeds a certain threshold value, the block is identified as having changed. The selection of this threshold value may depend upon the block size, the desired image quality, and the image formats, among other things. Accordingly, a block is identified as having changed when the luminance difference is too high. The chrominance values generally may be ignored for the purpose of determining whether a pixel or block has changed. This is due to the human eye's higher sensitivity to luminance than to chrominance.
  • As will be understood by one skilled in the art, the step 340 must take into account the case where there is no previous decoded video frame, such as when the first frame of a sequence is encoded. In this case, all of the blocks of the frame are identified as changed.
  • At a step 350, the identified pixel blocks are copied or moved into a contiguous block of memory. The pixel bocks that do not have at least a minimum difference are therefore discarded. In one embodiment, the pixel blocks that are not identified are deleted from the frame and the remaining blocks moved into a contiguous memory space.
  • At a step 360, the video encoder 120 adds a preamble block to the contiguous block of memory to provide an identification, within the encoded frame, of the pixel blocks that have been identified. The preamble block indicates whether a particular pixel block is included in the compressed representation of the video frame. The preamble block includes a layout of the memory block to enable the decoding of the video frame by the decoder 150. The preamble block also indicates the block size that was used to encode a particular video frame. There can be one preamble block for each frame.
  • In one embodiment, the preamble block contains one “present” bit for each pixel block in the frame. The “present” bit specifies whether the corresponding pixel block is present or included in the encoded frame. In the case a 160.times.160 frame is represented using one hundred 16.times.16 pixel blocks, the “present” bits can be arranged, for example, in a memory block of 10 words of 16 bits each, where the last 6 bits of each word are not used. In this case, when the 5.sup.th bit of the 3.sup.rd word is set to 1, the 5.sup.th block in the 3.sup.rd row has been identified and included, meaning that the block is present in the encoded representation of the video frame. Other configurations, which may utilize some or all of the bits in a memory block, may alternatively be used.
  • At a step 370, the video encoder 120 compresses the contiguous block of memory to form a compressed frame 242. This compression step results in compressing both the preamble block 234 and the pixel blocks 222. The memory block can be compressed by any of a variety of compression algorithms. In one embodiment, the block is compressed by an LZW-like compression algorithm. In another embodiment, zLib compression algorithm is used. In another embodiment, LZO compression algorithm is used. Different compression algorithms can be used depending on the target client device. Certain decompression algorithms can be more effectively run on certain client devices.
  • The compressed video frame 242 can then be streamed or transmitted to the client device for decoding and display. In one embodiment, encoded frames are partitioned into packets that are transmitted to the decoding device in accordance with known techniques.
  • III. Determination of Block Size to Use in Encoding a Frame
  • In one embodiment, the selection of block size to encode a particular video frame is based on which block size produces the best result. The best result may be produced when the size of the encoded video frame is the smallest thereby minimizing the amount of data that need to be transferred to and decoded by the client device 140.
  • FIG. 4 Illustrates a method 400 of selecting a block size to produce the best result. This method can be used in conjunction with any block-based video encoding method. The size of the block used to encode a frame can substantially affect the resulting size of the encoded frame. For example, in a video sequence with a significant amount of motion, it may be advantageous to use a smaller block size because fewer changed pixels may need to be Included in the encoded video frame. Therefore, the number of changed pixels that need to be included in the contiguous memory block 232 can be reduced. A larger block size may unnecessarily include additional pixels that may not have changed since the last frame.
  • As the block size decreases, however, the number of blocks required to represent the frame increases. Therefore, the size of the preamble block increases as the block size decreases since more bits are required to indicate whether a particular pixel block is included in the compressed representation of the video. As a result, the advantages of using a smaller block size must be weighed against the increased overhead in determining which block size produces the best result.
  • In one embodiment, at a step 420, a video frame is encoded in accordance with method 300 using the 16.times.16 block size. At a step 430, the same frame is encoded again using the next smaller block size of 8.times.8.
  • At a decision step 440, a determination as to which size produces better result is made. In one embodiment, a determination as to which block size produces the best result is made by comparing the final compressed video frame. In this embodiment, at the decision step 440, a comparison is made of the final sizes of the encoded representations of the video frame. For example, the final size of the encoded video frame using a 16.times.16 block size is compared with the final size of the encoded video frame using a 8.times.8 block size. If the encoded video frame using the 8.times.8 block size is smaller than the encoded video frame using the 16.times.16 block size, control returns to step 430 to encode the same frame again using even a smaller block size of 4.times.4. This process of encoding the video frame using the next smaller size blocks is continued until using the smaller size block no longer produces a smaller encoded video frame. When this occurs, the control flows to step 460. At a step 460, the smallest block size that results in improvement is used to encode the video frame.
  • In additional embodiments, a block size in the middle of the range of possible block sizes may be compared to the next larger and the next smaller block sizes. If the best result is produced by the middle block size then the process ends and the middle block size is used. If the best result is produced by the next larger block size, the second next larger block size is then considered and so on. If the best result is produced by the next small block size, the second next smaller block size is then considered and so on.
  • In accordance with one embodiment, a data table can be calculated in advance that allows the identification of the block size that results in the smallest contiguous block of memory after the preamble block is prepended to the changed blocks. The data table lists the required reduction in the number of identified blocks for each transition from a block size to a next smaller block size. One method starts with the largest block size. The method iteratively examines each smaller block size to determine if the requisite reduction in the number of identified blocks is provided. If the requisite reduction is not provided by the next smaller block size, then the larger block size will produce a smaller contiguous block of memory. Generally, a smaller contiguous block of memory will result in a smaller compressed block of memory (compressed frame 242).
  • IV. Decoding Method
  • FIG. 5 illustrates a method 500 performed by the decoder 150 included in the client device 140. The decoder 150 maintains a working video frame that maintains the image that is displayed. The decoder 150 iterates through the method 500 to decode each encoded frame.
  • At a step 510, the decoder receives the compressed frame 242 containing the compressed preamble block and the memory block. At a step 520, the decoder decompresses the compressed frame 242. The step 520 reproduces the uncompressed version of the contiguous memory block containing the preamble block and the pixel blocks. The uncompressed version of the contiguous memory block can be identical to the memory block produced in the step 360 of the method 300.
  • At a step 530, the decoder reads the preamble block to determine what block size was used to encode the frame and to determine which pixel blocks are present in the contiguous memory block. At a step 540, the decoder reads the bit sequences in the preamble block and copies the identified pixel blocks into the corresponding video frame to be displayed. At a step 550, the decoder displays the working video frame, which is displayed by the client device 140.
  • In decoding a first frame in a sequence, the decoder 150 may start with an empty working frame or a working frame with old/stale data. Nevertheless, since the first frame in a sequence will contain all of the pixels in the frame, all of the pixels in the working frame will be updated.
  • V. Implementing Key Frames
  • Key frames are encoded frames about which the decoding of a sequence of frames can begin. Accordingly, a sequence can be decoded starting at a location other than its beginning. Key frames also provide the ability to seek forward and backward within a video sequence. A key frame is generally inserted at fixed time intervals in a video sequence, such as every second. Without key frames, decoding generally cannot be initiated in the middle of a sequence of encoded frames since each encoded frame may rely upon data in any number of preceding decoded frames. If decoding is initiated at a point other than the beginning of a sequence, the preceding decoded frames may not be available.
  • In accordance with one embodiment, a key frame contains sufficient information to allow a full frame to be produced using only the encoded key frame and a limited number of preceding encoded frames. A key frame may be configured to rely upon zero preceding frames in which case the key frame is encoded in the same way as the initial frame in a sequence by assuming all pixels have changed. A key frame may alternatively be configured to rely upon one or more preceding frames (hereinafter “associated frames”). In this case, the encoding of a key frame can be performed using the method 300, but with a modified step 340 in which the changed pixel blocks are identified. Each pixel block that is not identified as changed In at least one of the associated frames is identified as changed during the encoding of the key frame. Accordingly, each pixel block in the working frame is provided by at least one of the key frame and the associated frames. Each key frame can be identified as a key frame and the associated frames upon which the key frame depends are can also identified. This identification information can also be incorporated into the preamble block.
  • A key frame that does not have associated frames (contains all of the pixel blocks in a video frame) can be decoded using the method 500. In order to decode a key frame that has associated frames, the associated frames are first decoded and their pixel data inserted into the working frame. The key frame is then decoded and its pixel data inserted into the working frame. Since the key frame provides all the pixels that are not provided by the associated frames, each of the pixels in the working frame is supplied with data by either the key frame or the associated frames. In an alternative embodiment, the key frame can be configured to precede rather than follow the associated frames.
  • VI. CONCLUSION
  • Although the invention has been described in terms of certain embodiments, other embodiments that will be apparent to those of ordinary skill in the art, including embodiments which do not provide all of the features and advantages set forth herein, are also within the scope of this invention. Accordingly, the scope of the Invention is defined by the claims that follow. In the claims, a portion shall include greater than none and up to the whole of a thing. In method claims, reference characters are used for convenience of description only, and do not indicate a particular order for performing a method.

Claims (50)

1-24. (canceled)
25. An article of manufacture comprising a storage medium having instructions stored thereon that, if executed, result in encoding a video stream by:
receiving a current video frame of the video stream;
subdividing the current video frame into uniform blocks of a selected block size, and comparing the blocks to corresponding blocks of a decoded version of a preceding video frame to determine whether any of the blocks of the current video frame are sufficiently unchanged from the preceding frame to be discarded;
optionally repeating said subdividing or said comparing, or combinations thereof, using at least one additional block size, wherein the current video frame is capable of being separately subdivided or compared, or combinations thereof, to the preceding video frame using multiple block sizes;
selecting from the multiple block sizes a uniform block size that is capable of producing a relatively better video frame compression result; and
encoding the video frame in the video stream with the block size selected by said selecting.
26. An article of manufacture as claimed in claim 25, wherein the instructions, if executed, further result in encoding different frames using different block sizes for multiple frames of the video stream.
27. An article of manufacture comprising a storage medium having instructions stored thereon that, if executed, result in encoding a video stream by:
receiving a current video frame of the video stream;
determining which of multiple possible uniform block sizes produces a relatively better result for encoding the current video frame, wherein the uniform block sizes are used to subdivide or compare, or combinations thereof, the current video frame or a preceding video frame, or combinations thereof, to determine whether any blocks of the current video frame are sufficiently unchanged to be discarded;
compressing the current video frame using at least in part the block size determined to produce the relatively better result; and
storing the compressed video frame in conjunction with an indication of the block size.
28. An article of manufacture comprising a storage medium having instructions stored thereon that, if executed, result in encoding video by:
dividing a video frame into blocks according to a uniform or nearly uniform block size;
identifying changed blocks by comparing one or more blocks to a corresponding block in a decoded version of a previous frame;
copying changed blocks into a contiguous or nearly contiguous block of memory; and
adding a preamble block.
29. Article of manufacture as claimed in claim 28, the preamble block being capable of indicating one or more blocks that are included in the contiguous or nearly contiguous block of memory.
30. Article of manufacture as claimed in claim 28, the preamble block being capable of indicating a block size used to encode the video frame.
31. Article of manufacture as claimed in claim 28, the preamble block being capable of varying in size from frame to frame.
32. Article of manufacture as claimed in claim 28, said identifying comprises determining a luminance difference from a corresponding block in an encoded version of the previous frame.
33. Article of manufacture as claimed in claim 28, the luminance difference comprising a predefined threshold value.
34. Article of manufacture as claimed in claim 28, wherein the instructions, if executed, further result in encoding video by compressing at least in part the contiguous or nearly contiguous memory block using an LZW type compression algorithm.
35. Article of manufacture as claimed in claim 28, wherein the instructions, if executed, further result in encoding video by compressing at least in part the contiguous or nearly contiguous memory block using an LZW type compression process, the compression process comprising a zLIB type process.
36. Article of manufacture as claimed in claim 28, wherein the instructions, if executed, further result in encoding video by compressing at least in part the contiguous or nearly contiguous memory block using an LZW type compression process, the compression process comprising an LZO type process.
37. An article of manufacture comprising a storage medium having instructions stored thereon that, if executed, result in encoding video by:
encoding a video frame using a first uniform or nearly uniform block size to create a first encoded frame;
encoding the same or nearly the same video frame using a second uniform or nearly uniform block size to create a second encoded frame;
comparing a size of the first encoded frame to a size of the second encoded frame; and
selecting the uniform or nearly uniform block size that results in a smaller encoded frame.
38. An article of manufacture comprising a storage medium having instructions stored thereon that, if executed, result in encoding a video stream by:
representing video frames wherein the video frames are encoded using multiple block sizes; and
representing preamble blocks including bitmaps of the encoded video frames or indicators indicating the block size used to encode the video frames in the video stream, or combinations thereof.
39. An article of manufacture comprising a storage medium having instructions stored thereon that, if executed, result in decoding a video stream by:
receiving a video frame encoded using multiple block size detection;
decompressing the received video frame;
determining a block size used to encode the video frame;
determining which blocks are present in the encoded video frame;
copying one or more blocks present in the encoded video frame into a display area; and
displaying the video frame.
40. An article of manufacture as claimed in claim 39, wherein one or more key frames are utilized to decode a sequence of frames starting at a location other than a beginning of the sequence.
41. An article of manufacture as claimed in claim 39, wherein one or more key frames are utilized to decode a sequence of frames starting at a location other than a beginning of the sequence, one or more of the key frames being utilized to seek forward or backward, or combinations thereof, within the sequence of frames.
42. An article of manufacture comprising a storage medium having instructions stored thereon that, if executed, result in encoding a video stream by:
subdividing a current video frame into uniform or nearly uniform blocks of a selected size;
identifying one or more blocks of the current video frame that differ by at least a minimum extent from one or more corresponding blocks in a decoded version of a preceding video frame;
subdividing or comparing, or combinations thereof, wherein the current video frame is subdivided or compared, or combinations thereof, to the preceding video frame using a one or more block sizes; and
selecting from the multiple block sizes a block size that produces a relatively better video compression result.
43. An article of manufacture as claimed in claim 42, wherein the instructions, if executed further result in encoding a video stream by encoding the video frame using one or more of the block sizes.
44. An article of manufacture as claimed in claim 43, said selecting utilizing an output of said encoding.
45. An article of manufacture as claimed in claim 43, wherein one or more of multiple frames of the video stream are utilized to generate an encoded video stream in which different frames are encoded using different block sizes.
46. An article of manufacture comprising a storage medium having instructions stored thereon that, if executed, result in encoding a video frame by:
providing a decoded preceding video frame;
subdividing the video frame into one or more blocks, wherein at least one or more of the blocks comprises at least one pixel;
identifying the blocks of a current video frame that differ by at least a minimum extent from one or more corresponding blocks in a decoded preceding video frame;
creating a map of locations of the identified blocks identified by said identifying in the video frame;
arranging the map or the identified blocks, or combinations thereof, in a contiguous or nearly contiguous block of memory; and
compressing the data in the contiguous or nearly contiguous block of memory.
47. A method for encoding video, comprising:
dividing one or more frames of video into one or more blocks according to a predetermined block size;
identifying changed blocks by comparing a block in a present frame to a corresponding block in an encoded version of a previous frame;
if the present frame is a key frame, identifying one or more blocks that were not identified by said identifying changed blocks as being changed blocks in the key frame;
copying one or more of the blocks identified as changed to a contiguous or nearly contiguous memory; and
compressing the contiguous or nearly contiguous memory.
48. A method as claimed in claim 47, further comprising adding one or more preamble blocks to the contiguous or nearly contiguous memory, the preamble blocks being capable of identifying the blocks that are included in the contiguous or nearly contiguous memory.
49. A method as claimed in claim 47, wherein an encoded key frame contains sufficient information to allow a full frame, or nearly a full frame, to be decoded by using the key frame and one or more preceding encoded frames.
50. A method as claimed in claim 47, wherein an encoded key frame contains all, or nearly all, the pixels not encoded in one or more preceding frames.
51. A method as claimed in claim 47, wherein a key frame is associated with one or more preceding frames.
52. A method as claimed in claim 47, wherein a key frame is associated with one or more succeeding frames.
53. An apparatus for encoding video, comprising:
means for dividing one or more frames of video into one or more blocks according to a predetermined block size;
means for identifying changed blocks by comparing a block in a present frame to a corresponding block in an encoded version of a previous frame;
means for identifying one or more blocks that were not identified by said means for identifying changed blocks as being changed blocks in the key frame if the present frame is a key frame;
means for copying one or more of the blocks identified as changed to a contiguous or nearly contiguous memory; and
means for compressing the contiguous or nearly contiguous memory.
54. An apparatus as claimed in claim 53, further comprising means for adding one or more preamble blocks to the contiguous or nearly contiguous memory, the preamble blocks being capable of identifying the blocks that are included in the contiguous or nearly contiguous memory.
55. An apparatus as claimed in claim 53, wherein an encoded key frame contains sufficient information to allow a full frame, or nearly a full frame, to be decoded by using the key frame and one or more preceding encoded frames.
56. An apparatus as claimed in claim 53, wherein an encoded key frame contains all, or nearly all, the pixels not encoded in one or more preceding frames.
57. An apparatus as claimed in claim 53, wherein a key frame is associated with one or more preceding frames.
58. An apparatus as claimed in claim 53, wherein a key frame is associated with one or more succeeding frames.
59. An article of manufacture comprising a storage medium having instructions stored thereon that, if executed, result in encoding video by:
dividing one or more frames of video into one or more blocks according to a predetermined block size;
identifying changed blocks by comparing a block in a present frame to a corresponding block in an encoded version of a previous frame;
if the present frame is a key frame, identifying one or more blocks that were not identified by said identifying changed blocks as being changed blocks in the key frame;
copying one or more of the blocks identified as changed to a contiguous or nearly contiguous memory; and
compressing the contiguous or nearly contiguous memory.
60. An article of manufacture as claimed in claim 59, wherein the instructions, if executer, further result in encoding video by adding one or more preamble blocks to the contiguous or nearly contiguous memory, the preamble blocks being capable of identifying the blocks that are included in the contiguous or nearly contiguous memory.
61. An article of manufacture as claimed in claim 59, wherein an encoded key frame contains sufficient information to allow a full frame, or nearly a full frame, to be decoded by using the key frame and one or more preceding encoded frames.
62. An article of manufacture as claimed in claim 59, wherein an encoded key frame contains all, or nearly all, the pixels not encoded in one or more preceding frames.
63. An article of manufacture as claimed in claim 59, wherein a key frame is associated with one or more preceding frames.
64. An article of manufacture as claimed in claim 59, wherein a key frame is associated with one or more succeeding frames.
65. A method for decoding video, comprising:
decoding one or more frames associated with a key frame and inserting the data of the one or more decoded frames into a working frame; and
decoding the key frame and inserting the data of the decoded key frame into the working frame.
66. A method as claimed in claim 65, wherein said decoding one or more frames associated with the key frame occurs prior to said decoding of the key frame.
67. A method as claimed in claim 65, wherein said decoding one or more frames associated with the key frame occurs after said decoding of the key frame.
68. An apparatus for decoding video, comprising:
means for decoding one or more frames associated with a key frame and inserting the data of the one or more decoded frames into a working frame;
means for decoding the key frame and inserting the data of the decoded key frame into the working frame.
69. A method as claimed in claim 68, wherein said means for decoding one or more frames associated with the key frame decodes the one or more frames prior to said means for decoding the key frame decodes the key frame.
70. A method as claimed in claim 68, wherein said means for decoding one or more frames associated with the key frame decodes the one or more frames after said means for decoding the key frame decodes the key frame.
71. An article of manufacture comprising a storage medium having instructions stored thereon that, if executed, result in decoding video by:
decoding one or more frames associated with a key frame and inserting the data of the one or more decoded frames into a working frame; and
decoding the key frame and inserting the data of the decoded key frame into the working frame.
72. An article of manufacture as claimed in claim 71, wherein said decoding one or more frames associated with the key frame occurs prior to said decoding of the key frame.
73. An article of manufacture as claimed in claim 71, wherein said decoding one or more frames associated with the key frame occurs after said decoding of the key frame.
US11/469,118 2000-10-02 2006-08-31 Methods for encoding digital video for decoding on low performance devices Abandoned US20070171982A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/469,118 US20070171982A1 (en) 2000-10-02 2006-08-31 Methods for encoding digital video for decoding on low performance devices

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US23755100P 2000-10-02 2000-10-02
US09/970,059 US6968012B1 (en) 2000-10-02 2001-10-02 Methods for encoding digital video for decoding on low performance devices
US11/190,108 US8295358B1 (en) 2000-10-02 2005-07-25 Encoding digital video
US11/469,118 US20070171982A1 (en) 2000-10-02 2006-08-31 Methods for encoding digital video for decoding on low performance devices

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US11/190,108 Continuation US8295358B1 (en) 2000-10-02 2005-07-25 Encoding digital video

Publications (1)

Publication Number Publication Date
US20070171982A1 true US20070171982A1 (en) 2007-07-26

Family

ID=35344986

Family Applications (4)

Application Number Title Priority Date Filing Date
US09/970,059 Expired - Lifetime US6968012B1 (en) 2000-10-02 2001-10-02 Methods for encoding digital video for decoding on low performance devices
US11/190,108 Active 2026-12-06 US8295358B1 (en) 2000-10-02 2005-07-25 Encoding digital video
US11/469,118 Abandoned US20070171982A1 (en) 2000-10-02 2006-08-31 Methods for encoding digital video for decoding on low performance devices
US13/204,556 Expired - Lifetime US8971414B2 (en) 2000-10-02 2011-08-05 Encoding digital video

Family Applications Before (2)

Application Number Title Priority Date Filing Date
US09/970,059 Expired - Lifetime US6968012B1 (en) 2000-10-02 2001-10-02 Methods for encoding digital video for decoding on low performance devices
US11/190,108 Active 2026-12-06 US8295358B1 (en) 2000-10-02 2005-07-25 Encoding digital video

Family Applications After (1)

Application Number Title Priority Date Filing Date
US13/204,556 Expired - Lifetime US8971414B2 (en) 2000-10-02 2011-08-05 Encoding digital video

Country Status (1)

Country Link
US (4) US6968012B1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8787454B1 (en) * 2011-07-13 2014-07-22 Google Inc. Method and apparatus for data compression using content-based features
US9788015B2 (en) 2008-10-03 2017-10-10 Velos Media, Llc Video coding with large macroblocks
US9912714B2 (en) 2012-02-27 2018-03-06 Zte Corporation Sending 3D image with first video image and macroblocks in the second video image

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7812856B2 (en) 2000-10-26 2010-10-12 Front Row Technologies, Llc Providing multiple perspectives of a venue activity to electronic wireless hand held devices
US7630721B2 (en) 2000-06-27 2009-12-08 Ortiz & Associates Consulting, Llc Systems, methods and apparatuses for brokering data between wireless devices and data rendering devices
US20030177255A1 (en) * 2002-03-13 2003-09-18 Yun David C. Encoding and decoding system for transmitting streaming video data to wireless computing devices
JP2003304404A (en) * 2002-04-09 2003-10-24 Canon Inc Image encoder
US7697610B2 (en) * 2004-09-13 2010-04-13 Microsoft Corporation Variable block size early termination for video coding
US8386628B1 (en) * 2005-05-23 2013-02-26 Glance Networks, Inc. Method and apparatus for reducing the amount of information that must be transmitted to slower viewers over a remote viewing session
US9098868B1 (en) 2007-03-20 2015-08-04 Qurio Holdings, Inc. Coordinating advertisements at multiple playback devices
US20080306818A1 (en) * 2007-06-08 2008-12-11 Qurio Holdings, Inc. Multi-client streamer with late binding of ad content
US20080313029A1 (en) * 2007-06-13 2008-12-18 Qurio Holdings, Inc. Push-caching scheme for a late-binding advertisement architecture
US8060904B1 (en) 2008-02-25 2011-11-15 Qurio Holdings, Inc. Dynamic load based ad insertion
US8848799B2 (en) * 2009-09-02 2014-09-30 Sony Computer Entertainment Inc. Utilizing thresholds and early termination to achieve fast motion estimation in a video encoder
US20130100245A1 (en) * 2011-10-25 2013-04-25 Samsung Electronics Co., Ltd. Apparatus and method for encoding and decoding using virtual view synthesis prediction
KR102120865B1 (en) * 2014-01-14 2020-06-17 삼성전자주식회사 Display Device, Driver of Display Device, Electronic Device including thereof and Display System
US10003811B2 (en) 2015-09-01 2018-06-19 Microsoft Technology Licensing, Llc Parallel processing of a video frame
CN105681825B (en) * 2015-12-31 2018-12-07 深圳市瑞彩电子技术有限公司 A kind of video code flow output-controlling device and method
JP6261020B2 (en) * 2016-06-28 2018-01-17 株式会社Nexpoint Screen image transfer method and screen image restoration method
WO2020133462A1 (en) * 2018-12-29 2020-07-02 Zhejiang Dahua Technology Co., Ltd. Methods and systems for image processing

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3571505A (en) * 1968-08-02 1971-03-16 Bell Telephone Labor Inc Redundancy reduction system for video signals
US4151407A (en) * 1977-04-28 1979-04-24 Texas Instruments Incorporated Low-power, infrared information transmission system
US4206316A (en) * 1976-05-24 1980-06-03 Hughes Aircraft Company Transmitter-receiver system utilizing pulse position modulation and pulse compression
US5235419A (en) * 1991-10-24 1993-08-10 General Instrument Corporation Adaptive motion compensation using a plurality of motion compensators
US5394410A (en) * 1992-10-30 1995-02-28 International Business Machines Corporation Differentially coded and guard pulse position modulation for communication networks
US5448296A (en) * 1993-04-23 1995-09-05 Music; John D. Variable parameter block coding and data compression system
US5487069A (en) * 1992-11-27 1996-01-23 Commonwealth Scientific And Industrial Research Organization Wireless LAN
US5799045A (en) * 1994-12-22 1998-08-25 Futaba Denshi Kogyo K.K. PLL-mode radiofrequency module
US5926301A (en) * 1994-02-28 1999-07-20 International Business Machines Corporation Method and apparatus for optical wireless communication
US6014694A (en) * 1997-06-26 2000-01-11 Citrix Systems, Inc. System for adaptive video/audio transport over a network
US6055266A (en) * 1996-08-09 2000-04-25 Ricoh Company, Ltd. Spread spectrum pulse position modulation communication system
US6169499B1 (en) * 1999-06-19 2001-01-02 Unisys Corporation LZW data compression/decompression apparatus and method with embedded run-length encoding/decoding
US6421333B1 (en) * 1997-06-21 2002-07-16 Nortel Networks Limited Channel coding and interleaving for transmission on a multicarrier system

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5232865B2 (en) * 2007-10-15 2013-07-10 トムソン ライセンシング Preamble of digital television system

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3571505A (en) * 1968-08-02 1971-03-16 Bell Telephone Labor Inc Redundancy reduction system for video signals
US4206316A (en) * 1976-05-24 1980-06-03 Hughes Aircraft Company Transmitter-receiver system utilizing pulse position modulation and pulse compression
US4151407A (en) * 1977-04-28 1979-04-24 Texas Instruments Incorporated Low-power, infrared information transmission system
US5235419A (en) * 1991-10-24 1993-08-10 General Instrument Corporation Adaptive motion compensation using a plurality of motion compensators
US5394410A (en) * 1992-10-30 1995-02-28 International Business Machines Corporation Differentially coded and guard pulse position modulation for communication networks
US5487069A (en) * 1992-11-27 1996-01-23 Commonwealth Scientific And Industrial Research Organization Wireless LAN
US5448296A (en) * 1993-04-23 1995-09-05 Music; John D. Variable parameter block coding and data compression system
US5926301A (en) * 1994-02-28 1999-07-20 International Business Machines Corporation Method and apparatus for optical wireless communication
US5799045A (en) * 1994-12-22 1998-08-25 Futaba Denshi Kogyo K.K. PLL-mode radiofrequency module
US6055266A (en) * 1996-08-09 2000-04-25 Ricoh Company, Ltd. Spread spectrum pulse position modulation communication system
US6421333B1 (en) * 1997-06-21 2002-07-16 Nortel Networks Limited Channel coding and interleaving for transmission on a multicarrier system
US6014694A (en) * 1997-06-26 2000-01-11 Citrix Systems, Inc. System for adaptive video/audio transport over a network
US6169499B1 (en) * 1999-06-19 2001-01-02 Unisys Corporation LZW data compression/decompression apparatus and method with embedded run-length encoding/decoding

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9788015B2 (en) 2008-10-03 2017-10-10 Velos Media, Llc Video coding with large macroblocks
US9930365B2 (en) 2008-10-03 2018-03-27 Velos Media, Llc Video coding with large macroblocks
US10225581B2 (en) 2008-10-03 2019-03-05 Velos Media, Llc Video coding with large macroblocks
US11039171B2 (en) 2008-10-03 2021-06-15 Velos Media, Llc Device and method for video decoding video blocks
US11758194B2 (en) 2008-10-03 2023-09-12 Qualcomm Incorporated Device and method for video decoding video blocks
US8787454B1 (en) * 2011-07-13 2014-07-22 Google Inc. Method and apparatus for data compression using content-based features
US9282330B1 (en) 2011-07-13 2016-03-08 Google Inc. Method and apparatus for data compression using content-based features
US9912714B2 (en) 2012-02-27 2018-03-06 Zte Corporation Sending 3D image with first video image and macroblocks in the second video image

Also Published As

Publication number Publication date
US8295358B1 (en) 2012-10-23
US6968012B1 (en) 2005-11-22
US8971414B2 (en) 2015-03-03
US20110286529A1 (en) 2011-11-24

Similar Documents

Publication Publication Date Title
US20070171982A1 (en) Methods for encoding digital video for decoding on low performance devices
US7171444B2 (en) Remote desktop protocol compression system
US6571016B1 (en) Intra compression of pixel blocks using predicted mean
US7218790B2 (en) Adaptive entropy encoding/decoding for screen capture content
US6639945B2 (en) Method and apparatus for implementing motion detection in video compression
US7769237B2 (en) Dynamic, locally-adaptive, lossless palettization of color and grayscale images
US8902992B2 (en) Decoder for selectively decoding predetermined data units from a coded bit stream
US7366319B2 (en) Embedding a multi-resolution compressed thumbnail image in a compressed image file
US20020012471A1 (en) Multimedia compression/decompression and compressed data representation
US20040208380A1 (en) System for reproducing moving image from JPEG 2000 encoded data stream
WO2006024077A2 (en) System and method for encoding and decoding video
KR20070046852A (en) System and method for compression of mixed graphic and video sources
US6584226B1 (en) Method and apparatus for implementing motion estimation in video compression
US20070274601A1 (en) Image compression method
EP1324618A2 (en) Encoding method and arrangement
US20030219167A1 (en) Method and system for forming HCVQ vector library
US20030202575A1 (en) System and method for digital video frame scanning and streaming
US7505045B2 (en) System and method for decoding live audio/video information
US20050196049A1 (en) System and method for encoding live audio/video information
JP2004253889A (en) Image processing apparatus and method
JPH08275153A (en) Image compressor and image decoder
WO2005074146A1 (en) Data encoding using multi-dimensional redundancies
EP0701755A1 (en) Digital image compression using tile subdivision
Ageenko et al. Storage system for document imaging applications
WO2005073920A1 (en) Systems and methods for encoding and decoding video information

Legal Events

Date Code Title Description
AS Assignment

Owner name: WIMAXIMUM, LLC, NEVADA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:FIREPAD, INC.;REEL/FRAME:019044/0770

Effective date: 20050718

Owner name: FIREPAD, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MEGGERS, JENS;REEL/FRAME:019044/0767

Effective date: 20020121

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

AS Assignment

Owner name: NORDIC INTERACTIVE TECHNOLOGIES LLC, TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:INTELLECTUAL VENTURES ASSETS 79 LLC;REEL/FRAME:045757/0597

Effective date: 20180501