Encoding digital video
First Claim
Patent Images
1. An apparatus, comprising:
- means for receiving a video frame of a video stream;
means for subdividing the video frame into blocks of a first block size;
means for subdividing the video frame into blocks of a second block size;
means for comparing the blocks of the first block size and the blocks of the second block size to corresponding blocks of a decoded version of a preceding video frame to determine whether any of the blocks of the first block size or the blocks of the second block size have not changed more than a minimum amount as compared to the corresponding blocks of the decoded version of the preceding video frame;
means for discarding the blocks of the first block size and the blocks of the second block size that have not changed more than the minimum amount;
means for determining that either the blocks of the first block size or the blocks of the second block size correspond to a compression block size that is capable of producing a smaller encoded video frame; and
means for encoding the video frame of the video stream using the compression block size.
5 Assignments
0 Petitions
Accused Products
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.
14 Citations
38 Claims
-
1. An apparatus, comprising:
-
means for receiving a video frame of a video stream; means for subdividing the video frame into blocks of a first block size; means for subdividing the video frame into blocks of a second block size; means for comparing the blocks of the first block size and the blocks of the second block size to corresponding blocks of a decoded version of a preceding video frame to determine whether any of the blocks of the first block size or the blocks of the second block size have not changed more than a minimum amount as compared to the corresponding blocks of the decoded version of the preceding video frame; means for discarding the blocks of the first block size and the blocks of the second block size that have not changed more than the minimum amount; means for determining that either the blocks of the first block size or the blocks of the second block size correspond to a compression block size that is capable of producing a smaller encoded video frame; and means for encoding the video frame of the video stream using the compression block size. - View Dependent Claims (2)
-
-
3. An apparatus, comprising:
-
means for determining which block size of multiple block sizes produces a smaller encoded frame, wherein the multiple block sizes are used to subdivide and compare a first video frame and a second video frame of a video stream to determine whether any blocks of the first video frame are sufficiently unchanged to be discarded; means for compressing the first video frame using the block size of the multiple block sizes determined to produce the smaller encoded frame; and means for storing a compressed video frame in conjunction with an indication of the block size used to compress the first video frame.
-
-
4. An apparatus, comprising:
-
means for dividing a video frame into blocks according to an approximately uniform block size; means for identifying changed blocks by comparing each of the blocks to each of respective corresponding blocks in a decoded version of a previous video frame; means for copying the changed blocks into a contiguous block of memory; and means for associating a preamble block with the changed blocks, the preamble block identifying the changed blocks. - View Dependent Claims (5, 6, 7, 8, 9, 10, 11)
-
-
12. An apparatus comprising:
-
means for receiving an encoded video frame encoded using multiple block size detection; means for decompressing the encoded video frame; means for determining a block size that was used to encode the encoded video frame; means for determining blocks that are present in the encoded video frame; and means for associating the blocks that are present in the encoded video frame with a display area. - View Dependent Claims (13, 14)
-
-
15. An apparatus comprising:
-
means for dividing a video frame into blocks of a first size; means for dividing the video frame into blocks of a second size; means for identifying the blocks of the first size and the blocks of the second size that differ by at least a minimum extent from corresponding blocks in a preceding video frame; and means for determining that either the blocks of the first size or the blocks of the second size can be used to produce a smaller encoded frame. - View Dependent Claims (16, 17, 18)
-
-
19. A method comprising:
-
dividing, by a computing device, a video frame into blocks of a first block size; dividing, by the computing device, the video frame into blocks of a second block size; comparing, by the computing device, the blocks of the first block size and the blocks of the second block size to corresponding blocks of a preceding video frame to determine whether any of the blocks of the first block size or the blocks of the second block size have not changed more than a minimum amount as compared to the corresponding blocks of the preceding video frame; discarding, by the computing device, the blocks of the first block size and the blocks of the second block size that have not changed more than the minimum amount; determining, by the computing device, that either the blocks of the first block size or the blocks of the second block size are capable of producing a compression block size that results in a smaller encoded video frame; and encoding, by the computing device, the video frame as part of a video stream using the compression block size. - View Dependent Claims (20)
-
-
21. A method comprising:
-
determining, by a computing device, which of multiple different block sizes produces a smaller encoded video frame for encoding a video frame, wherein the multiple different block sizes are used to compare the video frame to a preceding video frame to determine whether one or more blocks of the video frame are sufficiently unchanged with respect to the preceding video frame to be discarded; and compressing, by the computing device, the video frame to produce a compressed video frame using at least in part a block size determined to produce the smaller encoded video frame. - View Dependent Claims (22)
-
-
23. A method comprising:
-
dividing, by a computing device, a video frame into multiple blocks of an approximately uniform block size; identifying, by the computing device, one or more changed blocks of the multiple blocks by comparing one or more of the multiple blocks to one or more corresponding blocks of a previous video frame; and associating, by the computing device, a preamble block with the one or more changed blocks, the preamble block identifying the one or more changed blocks. - View Dependent Claims (24, 25, 26, 27, 28, 29)
-
-
30. A method comprising:
-
encoding, by a computing device, a video stream using video frames of multiple block sizes; and associating, by the computing device, a preamble block with the video stream, the preamble block including one or more of bitmaps of the video frames or an indication of one or more of the multiple block sizes. - View Dependent Claims (31)
-
-
32. A method comprising:
-
decompressing, by a computing device, a compressed video frame to produce a decompressed video frame; reading, by the computing device, a preamble block included in the decompressed video frame to determine a block size used to generate the compressed video frame and to determine pixel blocks associated with the decompressed video frame; and assembling, by the computing device, a displayable video frame based on the block size and using the pixel blocks. - View Dependent Claims (33, 34)
-
-
35. A computer-implemented method, comprising:
-
dividing, by a computer, a first video frame and a second video frame into blocks; identifying, by the computer, changed blocks associated with the first video frame by comparing blocks associated with the first video frame with blocks associated with the second video frame; combining, by the computer, the changed blocks associated with the first video frame with unchanged blocks associated with the first video frame responsive to a determination that the first video frame is a key frame; and compressing, by the computer, the changed blocks associated with the first video frame with the unchanged blocks associated with the first video frame to generate a compressed video frame. - View Dependent Claims (36, 37, 38)
-
Specification