Video compression method and apparatus
Abstract
A video compression system may have first and second dual-port memory devices, a third memory device, and first and second processors that may provide enhanced processing, including motion estimation. The first processor may be configured to store in the second memory device first and second video frames and to transfer sequential sets of data from the first video frame corresponding to fields of search. A second set of a plurality of adjacent macroblocks of the second video frame may be compared to macroblocks selected from the field of search. Dual-port memory devices may allow for the concurrent use of shared memory by the two processors as well as data transfer during processing.
Claims
exact text as granted — not AI-modified1 . A video compression system comprising:
a first memory device; a first processor configured to process video data according to a first video compression process, and to write processed data to the memory device; and a second processor configured to read video data processed by the first video compression process from the memory device while the first processor is writing processed data to the memory device, and process the read data by a second video compression process; at least one of the first and second video compression processes including motion estimation including a search of a first set of a plurality of adjacent macroblocks of a first video frame relative to a field of search of a second set of macroblocks of a second video frame.
2 . The system of claim 1 , where the first set includes an array of J macroblocks, and the second set includes an array of M sets of J adjacent macroblocks, where J and M are integers greater than one.
3 . The system of claim 2 , where a plurality of macroblocks of one of the first and second sets is compared concurrently with at least one macroblock of the other set.
4 . A video compression system comprising:
a first memory device; a second memory device; and a first processor configured to store in the first memory device data representative of at least a portion of each of a plurality of video frames, to transfer sequential sets of data representative of corresponding portions of the frames from the first memory device to the second memory device, which sets of data are fields of search, to process each current set of data stored in the second memory device according to a first video compression process including motion estimation while transferring a sequentially next set of data from the first memory device to the second memory device; the search being a search of a first set of a plurality of adjacent macroblocks of a first video frame relative to a field of search of a second set of macroblocks of a second video frame.
5 . The system of claim 4 , where the first set includes an array of J macroblocks, and the second set includes an array of M sets of J adjacent macroblocks, where J and M are integers greater than one.
6 . The system of claim 5 , where a plurality of macroblocks of one of the first and second sets is compared concurrently with at least one macroblock of the other set.
7 . A video compression system comprising:
a first memory device; and a first processor configured to store in the first memory device a set of video data representative of a first field of search including a first set of a plurality of macroblocks of a first video frame, and to search the first set of macroblocks relative to a second set of a plurality of adjacent macroblocks of a second video frame.
8 . The system of claim 7 , where the first set includes an array of M subsets of J adjacent macroblocks, and the second set includes an array of J macroblocks, where J and M are integers greater than one.
9 . The system of claim 8 , where the array of M macroblocks includes an array of K×L sets of J macroblocks, where K and L are integers greater than 1.
10 . The system of claim 8 , where a plurality of macroblocks of one of the first and second sets is compared concurrently with at least one macroblock of the other set.
11 . The system of claim 10 , where the macroblocks in the array of J macroblocks are contained within the same lines of the second video frame.
12 . The system of claim 10 , where the macroblocks in the second set are compared concurrently with each of a plurality of macroblocks selected from the first set.
13 . The system of claim 12 , further comprising a second processor configured to search an associated plurality of macroblocks selected from the first set of macroblocks, relative to each macroblock of the second set of macroblocks.
14 . The system of claim 13 , where the second processor is further configured to compare sequentially each macroblock in the second set with overlapping macroblocks included in the associated plurality of macroblocks selected from the first set.
15 . The system of claim 14 , where the second processor is configured to compare each macroblock of the second set concurrently with a plurality of macroblocks from the first set.
16 . The system of claim 10 , where the macroblocks in the second set are sequentially compared with macroblocks selected from the first set, with each macroblock of the second set being compared concurrently with a plurality of macroblocks from the first set.
17 . A method of compressing video data comprising:
processing video data according to a first video compression process; writing processed data to a first memory device; while writing processed data, reading processed data from the memory device; and processing the read data by a second video compression process; at least one of processing the video data and processing the read data includes motion estimating including performing a stage of a hierarchical search including searching a first set of a plurality of adjacent macroblocks of a first video frame relative to a field of search of a second set of a plurality of macroblocks of a second video frame.
18 . The method of claim 17 , where searching the first set includes searching an array of J macroblocks relative to an array of M sets of J adjacent macroblocks, where J and M are integers greater than one.
19 . The method of claim 18 , where searching an array includes comparing a plurality of macroblocks of one of the first and second sets concurrently with at least one macroblock of the other set.
20 . A method of compressing video data comprising:
storing in a first memory device data representative of at least a portion of each of a plurality of video frames; transferring sequential sets of data corresponding to fields of search representative of corresponding portions of the frame from the first memory device to a second memory device;
processing each set of data stored in the second memory device according to a first video compression process including estimating motion by searching a first set of a plurality of adjacent macroblocks of a first video frame relative to a field of search of a second set of macroblocks of a second video frame; and
during processing of each set of data stored in the second memory device, transferring a sequentially next set of data from the first memory device to the second memory device.
21 . The method of claim 20 , where the first set includes an array of J macroblocks, and the second set includes an array of M sets of J adjacent macroblocks, where J and M are integers greater than one.
22 . The method of claim 21 , where searching a first set of a plurality of adjacent macroblocks includes comparing concurrently a plurality of macroblocks of one of the first and second sets with at least one macroblock of the other set.
23 . A method of compressing video data comprising:
storing in a first memory device a set of data representative of a first field of search including a first set of a plurality of macroblocks of a first video frame; and searching the first set of macroblocks relative to a second set of a plurality of adjacent macroblocks of a second video frame.
24 . The method of claim 23 , where the first set includes an array of M subsets of J adjacent macroblocks, and the second set includes an array of J macroblocks, where J and M are integers greater than one.
25 . The method of claim 24 , where the array of M macroblocks includes K×L sets of J macroblocks, where K and L are integers greater than 1.
26 . The method of claim 24 , where searching includes comparing concurrently a plurality of macroblocks of one of the first and second sets with at least one macroblock of the other set.
27 . The method of claim 26 , where the macroblocks in the array of J macroblocks are contained within the same lines of the second video frame.
28 . The method of claim 26 , where comparing includes comparing concurrently the macroblocks in the second set with each of a plurality of macroblocks selected from the first set.
29 . The method of claim 28 , further comprising selecting a plurality of macroblocks from the first set of macroblocks associated with each macroblock of the second set of macroblocks, and searching the associated plurality of macroblocks selected from the first set of macroblocks relative to each macroblock of the second set of macroblocks.
30 . The method of claim 29 , where searching the associated plurality of macroblocks includes comparing sequentially each macroblock in the second set with overlapping macroblocks included in the associated plurality of selected macroblocks.
31 . The method of claim 30 , where comparing each macroblock in the second set includes comparing concurrently each macroblock of the second set with a plurality of macroblocks from the first set.
32 . The method of claim 26 , where comparing includes comparing sequentially the macroblocks in the second set with macroblocks selected from the first set, including comparing concurrently each macroblock of the second set with a plurality of macroblocks from the first set.
33 . A computer-readable medium readable by one or more processors and having embodied therein a program of computer-readable instructions that, when executed by the one or more processors, provide for:
processing video data according to a first video compression process; writing processed data to a first memory device; while writing processed data, reading processed data from the memory device; and processing the read data by a second video compression process; at least one of processing the video data and processing the read data including motion estimating including performing a stage of a hierarchical search including searching a first set of a plurality of adjacent macroblocks of a first video frame relative to a field of search of a second set of a plurality of macroblocks of a second video frame.
34 . The computer-readable medium of claim 33 , where searching the first set includes searching an array of J macroblocks relative to an array of M sets of J adjacent macroblocks, where J and M are integers greater than one.
35 . A computer-readable medium readable by one or more processors and having embodied therein a program of computer-readable instructions that, when executed by the one or more processors, provide for:
storing in a first memory device data representative of at least a portion of each of a plurality of video frames; transferring sequential sets of data corresponding to fields of search and representative of corresponding portions of the frames from the first memory device to a second memory device; processing each set of data stored in the second memory device according to a first video compression process including estimating motion by searching a first set of a plurality of adjacent macroblocks of a first video frame relative to a field of search of a second set of macroblocks of a second video frame; and during processing of each set of data stored in the second memory device, transferring a sequentially next set of data from the first memory device to the second memory device.
36 . A computer-readable medium readable by one or more processors and having embodied therein a program of computer-readable instructions that, when executed by the one or more processors, provide for:
storing in a first memory device a set of data representative of a first field of search including a first set of a plurality of macroblocks of a first video frame; and searching the first set of macroblocks relative to a second set of a plurality of adjacent macroblocks of a second video frame.
37 . The computer-readable medium of claim 36 , where the first set includes an array of M subsets of J adjacent macroblocks, and the second set includes an array of J macroblocks, where J and M are integers greater than one.
38 . The computer-readable medium of claim 37 , where searching includes comparing concurrently a plurality of macroblocks of one of the first and second sets with at least one macroblock of the other set.
39 . The computer-readable medium of claim 38 , where the macroblocks in the array of J macroblocks are contained within the same lines of the second video frame.
40 . The computer-readable medium of claim 38 , where comparing includes comparing concurrently the macroblocks in the second set with each of a plurality of macroblocks selected from the first set.
41 . The computer-readable medium of claim 40 , where the instructions further provide for selecting a plurality of macroblocks from the first set of macroblocks associated with each macroblock of the second set of macroblocks, and searching the associated plurality of macroblocks selected from the first set of macroblocks relative to each macroblock of the second set of macroblocks.
42 . The computer-readable medium of claim 38 , where comparing includes comparing sequentially the macroblocks in the second set with macroblocks selected from the first set, including comparing concurrently each macroblock of the second set with a plurality of macroblocks from the first set.Join the waitlist — get patent alerts
Track US2009232201A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.