Claims
- 1. A method of performing compression of video data input to a video compression/decompression unit (VCDU) coupled to a central processor unit (CPU), wherein said video data comprises a plurality of frames of data, and wherein said compression step is apportioned into a plurality of tactical, policy making steps and a plurality of execution steps, said method comprising the step of:
providing a plurality of statistical information for each of said frames; determining, in software, responsive to said statistical information, said plurality of tactical information for each of said frames of said input video data; and executing, in hardware, responsive to said tactical information for each frame, a plurality of functions for compressing said video data.
- 2. The method according to claim 1, wherein each of said frames is further apportioned into a plurality of macroblocks, and wherein said step of providing a plurality of tactical information further comprises the steps of:
determining, responsive to said statistical information for each of said frames, an encoding type for each of said macroblocks in each of said frames.
- 3. The method according to claim 1, wherein each of said frames is further apportioned into a plurality of macroblocks, and wherein said step of providing a plurality of tactical information further comprises the steps of:
determining, responsive to said statistical information for each of said frames, a quantization factor for each of said macroblocks in each of said frames.
- 4. The method according to claim 1, further comprising the step of:
assigning, responsive to said executing step, codes for each of a plurality of units of said compressed data.
- 5. The method according to claim 4, wherein said step of assigning is performed in software.
- 6. A method of performing decompression of a bit stream representing video data stored in a storage device of a computer system, said computer system including a central processing unit (CPU) and a video compression/decompression unit (VCDU) coupled to said CPU, said video data comprising a plurality of frames, each of said frames apportioned into a plurality of macroblocks, said method comprising the steps of:
translating, by said CPU, said bit stream into one or more tokens for each of said plurality of frames; said VCDU decoding each of said tokens to construct a plurality of macroblocks for each of said frames; decoding, by said CPU, a coding type for each of said macroblocks of each of said frames, said coding type for indicating how each of said macroblocks is compressed; and using at least one stored motion vector for each of said macroblocks, and responsive to said coding type of each of said macroblocks, reconstructing each macroblock to provide a restored video image. wherein said coding types include temporal coding types and spatial coding types, and wherein said step of reconstructing each said macroblock further comprises the step of: responsive to said coding type being a temporal coding type providing said restored macroblock by adding the contents of each entry of said macroblock to the value of pixels within the macroblock indicated by a first motion vector; applying an inverse discrete cosine transform to either said constructed macroblock, or said restored macroblock, responsive to said coding type being either a spatial coding type of a temporal coding type, respectively, to provide a reconstructed macroblock for use in said restored video image.
- 7. In a video-image processing system, a method for compressing a video image comprising the steps of:
receiving a video signal representing a video image; calculating a current image to a prior image difference value in a compare module; comparing said difference value to a variable adaptive threshold level, if said difference value is less than the current value of said variable adaptive threshold level, subtracting said difference value from said current value of said variable adaptive threshold value, thereby producing a new current value of said variable adaptive threshold level, and deleting said video signal, if said difference value exceeds said variable adaptive threshold value, resetting said variable adaptive threshold to a predetermined beginning threshold value and, sending said video signal to an encoding and transmitting module.
- 8. The video-image processing system of claim 7, wherein said step of receiving a video signal representing a video image, further includes a step of measuring a maximum bandwidth capacity of said received video signal, and setting a constant bit rate equal to said maximum bandwidth capacity of the video signal for said video image processing system steps.
- 9. In a video-image processing system, an apparatus for compressing a video image comprising:
means for receiving a video signal representing a video image, means for calculating a current image to a prior image difference value in a compare module, means for comparing said difference value to a current value of a variable adaptive threshold level, means for determining if said difference value is less than the current value of said variable adaptive threshold value, and subtracting said difference value from said current value of said variable adaptive threshold value thereby producing a new current value of said variable adaptive threshold value, and deleting said video signal, means for determining if said difference value exceeds said current value of said variable adaptive threshold value and resetting said variable adaptive threshold to a predetermined beginning threshold value and sending said video signal to an encoding and transmitting module.
- 10. The video-image processing system of claim 9, wherein said means for receiving a video signal representing a video image, further includes means for measuring a maximum bandwidth capacity of said received video signal, and setting a constant bit rate equal to said maximum bandwidth capacity of the video signal for said video image processing system.
- 11. A method for performing motion compensation on video data comprising the steps of:
segmenting a first portion of video data into a first plurality of macroblocks, each macroblock comprising a plurality of pixels; segmenting a second portion of video data into a second plurality of macroblocks, each macroblock comprising a like plurality of pixels; comparing one of said plurality of macroblocks of said first portion of video data to each of said plurality of macroblocks of said second portion of video data; determining a macroblock of said second portion of video data which most closely matches said macroblock of interest in said first portion of video data.
- 12. The method of claim 11 which further comprises the step of calculating a motion vector, for each one of said first plurality of macroblocks, each of said motion vectors representing a change in position of said associated macroblock relative to said determined matching macroblock.
- 13. The method of claim 12 wherein the motion vector is calculated by:
calculating a first difference between the horizontal coordinate of a chosen pixel of said macroblock of interest in said first portion of video data and the horizontal coordinate of a corresponding pixel of said matching macroblock in said second portion of video data; and calculating a second difference between the vertical coordinate of a chosen pixel of said macroblock of interest in said first portion of video data and the vertical coordinate of a corresponding pixel of said matching macroblock in said second portion of video data.
- 14. The method of claim 13 wherein the motion vector is further calculated by:
generating a plurality of motion compensated pixels of said matching macroblock by adding a vector comprising said first difference as its horizontal value and said second difference as its vertical value, to each pixel coordinate in said matching macroblock.
- 15. The method of claim 14 which further comprises filtering said pixels of said macroblock of interest with corresponding plurality of motion compensated pixels of said matching macroblock.
- 16. The method of claim 15, wherein said filtering is performed only if said macroblock of interest has a horizontal and vertical location different than a horizontal and vertical location of said matching macroblock.
- 17. The method of claim 15, wherein said filtering is performed if a cumulative difference of pixel values which comprise said macroblock of interest is different than a cumulative difference of pixel values which comprise said matching macroblock.
- 18. An integrated circuit comprising:
means for storing a plurality of frames of video data; means for partitioning each of said plurality of frames of video data into equivalent sized macroblocks; means for calculating a cumulative difference between pixel values of a first macroblock from a first frame and corresponding pixel values of a second macroblock from a second frame; means for storing said cumulative difference; and means for identifying a matching macroblock in said second frame of video data by determining the smallest value of said cumulative difference.
- 19. The integrated circuit of claim 18 further comprising:
means for calculating a position difference representing the difference between the position of any pixel of said closely matching macroblock and the position of a corresponding pixel of said first macroblock.
- 20. The integrated circuit of claim 19 further comprising:
means for adding said position difference to each pixel in said closely matching macroblock.
RELATED APPLICATIONS
[0001] This application is a divisional of U.S. patent application Ser. No. 09/613,359 filed Jul. 10, 2000 which is a continuation of U.S. patent application Ser. No. 08/670,199 filed on Jun. 21, 1996 (now U.S. Pat. No. 6,101,275 issued Aug. 8, 2000), the entire teachings of which are incorporated herein by reference.
Divisions (1)
|
Number |
Date |
Country |
Parent |
09613359 |
Jul 2000 |
US |
Child |
10721947 |
Nov 2003 |
US |
Continuations (1)
|
Number |
Date |
Country |
Parent |
08670199 |
Jun 1996 |
US |
Child |
09613359 |
Jul 2000 |
US |