Macroblock based scaling of images using reduced memory bandwidth
First Claim
1. A method of scaling resolution of an image, comprising:
- responsive to receiving first input pixel data for upscaling vertically and horizontally;
storing the first input pixel data in a memory;
sending a block of pixels of the first input pixel data from the memory to a vertical scaler;
generating, at the vertical scaler, first scaled pixel data representing the block of pixels upscaled vertically compared to the block of pixels;
receiving, at a horizontal scaler via a first input of a multiplexer, two or more macroblocks of the first scaled pixel data from the vertical scaler without storing the first scaled pixel data in the memory;
generating second scaled pixel data by filtering pixel data for a plurality of pixels spanning across the two or more macroblocks of the first scaled pixel data at a scaling filter in the horizontal scaler, the second scaled pixel data representing a block of pixels upscaled horizontally compared to the two or more macroblocks of the first scaled pixel data; and
generating a vertically and horizontally upscaled version of the image based on the second scaled pixel data; and
responsive to receiving second input pixel data for horizontal scaling without vertical scaling;
receiving, at the horizontal scaler via a second input of the multiplexer, two or more macroblocks of the second input pixel data;
generating third scaled pixel data by filtering pixel data for a plurality of pixel data spanning across the two or more macroblocks of the second input pixel data, the third scaled pixel data representing a block of pixels scaled horizontally compared to the two or more macroblocks of the second input pixel data; and
generating a horizontally scaled version of the image based on the third scaled pixel data.
7 Assignments
0 Petitions
Accused Products
Abstract
A method and/or system of scaling images by providing a horizontal macroblock scaler with pixels of the images in units of macroblocks and a vertical macroblock scaler where the pixels of the output image are in units of macroblocks. For the horizontal macroblock scaler macroblocks decoded or vertically scaled are read into the horizontal scaler to generate horizontally scaled macroblocks of pixels. The horizontal scaler need not access data stored in a memory, which reduces the memory bandwidth need for scaling the image. For the vertical macroblock scaler macroblocks decoded or horizontally scaled are read into the vertical scaler from memory to generate vertical scaled macroblocks of pixel. The output of the vertical scaler can be sent directly to an encoder without going through memory first, which reduces the memory bandwidth need for scaling the image. A transcoder parameter may also be provided to scale transcoder parameters such as quantization step sizes and motion vectors that are received from the decoder. The scaled transcoder parameters may be fed to an encoder or a transcoder to encode or transcode the scaled images without motion estimation that is computationally expensive.
21 Citations
19 Claims
-
1. A method of scaling resolution of an image, comprising:
-
responsive to receiving first input pixel data for upscaling vertically and horizontally; storing the first input pixel data in a memory; sending a block of pixels of the first input pixel data from the memory to a vertical scaler; generating, at the vertical scaler, first scaled pixel data representing the block of pixels upscaled vertically compared to the block of pixels; receiving, at a horizontal scaler via a first input of a multiplexer, two or more macroblocks of the first scaled pixel data from the vertical scaler without storing the first scaled pixel data in the memory; generating second scaled pixel data by filtering pixel data for a plurality of pixels spanning across the two or more macroblocks of the first scaled pixel data at a scaling filter in the horizontal scaler, the second scaled pixel data representing a block of pixels upscaled horizontally compared to the two or more macroblocks of the first scaled pixel data; and generating a vertically and horizontally upscaled version of the image based on the second scaled pixel data; and responsive to receiving second input pixel data for horizontal scaling without vertical scaling; receiving, at the horizontal scaler via a second input of the multiplexer, two or more macroblocks of the second input pixel data; generating third scaled pixel data by filtering pixel data for a plurality of pixel data spanning across the two or more macroblocks of the second input pixel data, the third scaled pixel data representing a block of pixels scaled horizontally compared to the two or more macroblocks of the second input pixel data; and generating a horizontally scaled version of the image based on the third scaled pixel data. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A scaler for scaling an image, the scaler comprising:
-
a memory and a processor, the processor comprising;
a vertical scaler configured to generate first scaled pixel data representing a block of pixels upscaled vertically compared to first input pixel data for upscaling vertically and horizontally;a multiplexer having at least a first input and a second input, the first input configured to receive the first scaled pixel data, the second input configured to receive second input pixel data for horizontal scaling without vertical scaling; and a horizontal scaler coupled to the multiplexer and comprising; an input buffer configured to receive two or more macroblocks of the first scaled pixel data via the multiplexer without storing the first scaled pixel data in the memory separate from the horizontal scaler and the vertical scaler, the input buffer further configured to receive two or more macroblocks of the second input pixel data via the multiplexer, a scaling filter configured to generate second scaled pixel data by filtering pixel data for a plurality of pixels spanning across the two or more macroblocks of the first scaled pixel data, the second scaled pixel data representing a block of pixels horizontally upscaled compared to the two or more macroblocks of the first scaled pixel data, the scaling filter further configured to generate third scaled pixel data by filtering pixel data for a plurality of pixels spanning across the two or more macroblocks of the second input pixel data, and an output buffer configured to store the second scaled pixel data or the third scaled pixel data. - View Dependent Claims (9, 10, 11, 12, 13)
-
-
14. A transcoder system for converting an image in a first format to a second format, comprising:
-
a memory and a processor, the processor comprising;
a decoder configured to decode the image in the first format and outputting a sequence of a first decoded macroblocks for upscaling vertically and horizontally or second decoded macroblocks for horizontal scaling without vertical scaling;a scaler comprising; a vertical scaler configured to generate first scaled pixel data representing a block of pixels upscaled vertically compared to the first decoded macroblocks; a multiplexer having at least a first input and a second input, the first input configured to receive the first scaled pixel data, the second input configured to receive the second decoded macroblocks; a horizontal scaler coupled to the multiplexer and comprising; an input buffer configured to receive two or more macroblocks of the first scaled pixel data via the multiplexer without storing the first scaled pixel data in the memory separate from the horizontal scaler and the vertical scaler, the input buffer further configured to receive two or more macroblocks of the second decoded macroblocks via the multiplexer, a scaling filter configured to generate second scaled pixel data by filtering pixel data for a plurality of pixels spanning across the two or more macroblocks of the first scaled pixel data, the second scaled pixel data representing a block of pixels horizontally upscaled compared to the two or more macroblocks of the first scaled pixel data, the scaling filter further configured to generate third scaled pixel data by filtering pixel data for a plurality of pixels spanning across the two or more macroblocks of the second decoded macroblocks, and an output buffer configured to store the second scaled pixel data or the third scaled pixel data; and an encoder configured to receive the second scaled pixel data or the third scaled pixel data and encode the second scaled pixel data or the third scaled pixel data into a transcoded image in the second format. - View Dependent Claims (15, 16, 17, 18, 19)
-
Specification