IP Library Granted Patent US 9,930,354
Granted Patent B2
US 9,930,354 · App. 14/966,858 · Granted Mar 27, 2018

Skip scanlines on JPEG image decodes

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,930,354
App. No.
14/966,858
Granted
Mar 27, 2018
Kind
B2
Abstract

An image decoder includes a processor and a memory. The memory includes instructions configured to cause the processor to perform steps. The steps include to receive a bitstream including a plurality encoded blocks representing an image, receive a boundary indicator representing a cropped portion of the image, determine a row start and a row end within the image based on the boundary indicator, and in a single decoding pass, entropy decode the plurality of encoded blocks that include the row start, the row end and the rows there between and transform for display a portion of the plurality of encoded blocks that include the rows including the cropped portion of the image, and skip processing of a remainder of the plurality of encoded blocks.

Claims (115)

1. An image decoder comprising:

a processor; and

a memory, the memory including instructions configured to cause the processor to:

receive a bitstream including a plurality of encoded blocks representing an image,

receive an indication of a cropped portion of the image, and

in a single decoding pass,

entropy decode the plurality of encoded blocks that include at least the cropped portion of the image to generate a plurality of entropy decoded blocks,

inverse transform the plurality of entropy decoded blocks to generate a plurality of inverse transformed blocks, and

upsample and color convert, for display, pixels included in a portion of the plurality of inverse transformed blocks that correspond to the cropped portion of the image, and

skip the single decoding pass for encoded blocks that do not include at least the cropped portion of the image.

2. The image decoder of claim 1 , wherein each of the plurality of encoded blocks are independently encoded and an entropy decoded one of the plurality of encoded blocks indicates a start position of a next of the plurality of encoded blocks.

3. The image decoder of claim 1 , wherein the encoded blocks representing the image were encoded using a JPEG codec.

4. The image decoder of claim 1 , wherein the single decoding pass begins at a row start and ends at a row end based on the indication.

5. The image decoder of claim 1 , wherein during the single pass, the instructions cause the processor to:

determine a row start and a row end within the image based on the indication;

select a row of pixels to be decoded;

determine whether the row of pixels to be decoded is included in the row start, the row end or rows therebetween;

upon determining the row of pixels to be decoded is included in the row start, the row end or the rows therebetween,

determine whether a row of blocks of the plurality of encoded blocks including the row of pixels to be decoded has been entropy decoded,

upon determining the row of blocks of the plurality of encoded blocks including the row of pixels to be decoded has been entropy decoded, inverse transform the row of pixels to be decoded, and

upon determining the row of blocks of the plurality of encoded blocks including the row of pixels to be decoded has not been entropy decoded, entropy decode the row of blocks of the plurality of encoded blocks including the row of pixels to be decoded and inverse transform the row of pixels to be decoded; and

upon determining the row of pixels to be decoded is not included in the row start, the row end or the rows therebetween, skip processing of the row of pixels to be decoded.

6. The image decoder of claim 1 , wherein during the single pass, the instructions cause the processor to:

determine a row start and a row end within the image based on the indication;

select a row of pixels to be decoded;

determine whether the row of pixels to be decoded is the row end; and

upon determining the row of pixels to be decoded is the row end,

determine whether a row of blocks of the plurality of encoded blocks including the row of pixels to be decoded has been entropy decoded,

upon determining the row of blocks of the plurality of encoded blocks including the row of pixels to be decoded has been entropy decoded, inverse transform the row of pixels to be decoded,

upon determining the row of blocks of the plurality of encoded blocks including the row of pixels to be decoded has not been entropy decoded, entropy decode the row of blocks of the plurality of encoded blocks including the row of pixels to be decoded and inverse transform the row of pixels to be decoded, and

stop decoding.

7. The image decoder of claim 1 , after completion of the single pass, the instructions cause the processor to:

determine a column start and a column end within the image based on the indication; and

crop a decoded image based on the column start and the column end.

8. The image decoder of claim 1 , wherein during the single pass, the instructions cause the processor to:

determine a column start and a column end within the image based on the indication;

decode and inverse transform the plurality of encoded blocks that includes the column start, the column end and the column therebetween; and

skip processing of a remainder of the plurality of encoded blocks.

9. The image decoder of claim 1 , wherein during the single pass, the instructions cause the processor to:

determine a row start and a row end within the image based on the indication;

determine a column start and a column end within the image based on the indication;

select a row of pixels to be decoded;

determine whether the row of pixels to be decoded is included in the row start, the row end or the rows therebetween;

upon determining the row of pixels to be decoded is included in the row start, the row end or the rows therebetween,

determine whether a row of blocks of the plurality of encoded blocks including the row of pixels to be decoded has been entropy decoded,

upon determining the row of blocks of the plurality of encoded blocks including the row of pixels to be decoded has been entropy decoded, inverse transform only pixels of the row of pixels to be decoded that are included in the column start, the column end or the columns therebetween, and

upon determining the row of blocks of the plurality of encoded blocks including the row of pixels to be decoded has not been entropy decoded, entropy decode the row of blocks of the plurality of encoded blocks including the row of pixels to be decoded and inverse transform only pixels of the row of pixels to be decoded that are included in the column start, the column end or the columns therebetween; and

upon determining the row of pixels to be decoded is not included in the row start, the row end or the rows therebetween, skip processing of the row of pixels to be decoded.

10. A method comprising:

receiving a bitstream including a plurality of encoded blocks representing an image;

receiving an indication of a cropped portion of the image; and

in a single decoding pass,

generating a plurality of entropy decoded blocks by entropy decoding the plurality of encoded blocks that include at least the cropped portion of the image,

generating a plurality of inverse transformed blocks by inverse transforming the plurality of entropy decoded blocks, and

upsampling and color converting, for display, pixels included in a portion of the plurality of inverse transformed that correspond to the cropped portion of the image; and

skipping the single decoding pass for encoded blocks that do not include at least the cropped portion of the image.

11. The method of claim 10 , wherein each of the plurality of encoded blocks are independently encoded and one of the plurality of entropy decoded blocks indicates a start position of a next of the plurality of encoded blocks.

12. The method of claim 10 , wherein the encoded blocks representing the image were encoded using a JPEG codec.

13. The method of claim 10 , further comprising determining a row start and a row end within the image based on the indication, wherein the single decoding pass begins at the row start and ends at the row end.

14. The method of claim 10 , wherein during the single pass:

determine a row start and a row end within the image based on the indication,

select a row of pixels to be decoded;

determine whether the row of pixels to be decoded is included in the row start, the row end or the rows therebetween;

upon determining the row of pixels to be decoded is included in the row start, the row end or the rows therebetween,

determine whether a row of blocks of the plurality of encoded blocks including the row of pixels to be decoded has been entropy decoded,

upon determining the row of blocks of the plurality of encoded blocks including the row of pixels to be decoded has been entropy decoded, inverse transform the row of pixels to be decoded, and

upon determining the row of blocks of the plurality of encoded blocks including the row of pixels to be decoded has not been entropy decoded, entropy decode the row of blocks of the plurality of encoded blocks including the row of pixels to be decoded and inverse transform the row of pixels to be decoded; and

upon determining the row of pixels to be decoded is not included in the row start, the row end or the rows therebetween, skip processing of the row of pixels to be decoded.

15. The method of claim 10 , wherein during the single pass:

determine a row start and a row end within the image based on the indication,

select a row of pixels to be decoded;

determine whether the row of pixels to be decoded is the row end; and

upon determining the row of pixels to be decoded is the row end,

determine whether a row of blocks of the plurality of encoded blocks including the row of pixels to be decoded has been entropy decoded,

upon determining the row of blocks of the plurality of encoded blocks including the row of pixels to be decoded has been entropy decoded, inverse transform the row of pixels to be decoded,

upon determining the row of blocks of the plurality of encoded blocks including the row of pixels to be decoded has not been entropy decoded, entropy decode the row of blocks of the plurality of encoded blocks including the row of pixels to be decoded and inverse transform the row of pixels to be decoded, and

stop decoding.

16. The method of claim 10 , after completion of the single pass:

determine a column start and a column end within the image based on the indication; and

crop a decoded image based on the column start and the column end.

17. The method of claim 10 , wherein during the single pass:

determine a column start and a column end within the image based on the indication;

decode and inverse transform the plurality of encoded blocks that includes the column start, the column end and the column therebetween; and

skip processing of a remainder of the plurality of encoded blocks.

18. The method of claim 10 , wherein during the single pass:

determine a row start and a row end within the image based on the indication,

determine a column start and a column end within the image based on the indication;

select a row of pixels to be decoded;

determine whether the row of pixels to be decoded is included in the row start, the row end or the rows therebetween;

upon determining the row of pixels to be decoded is included in the row start, the row end or the rows therebetween,

determine whether a row of blocks of the plurality of encoded blocks including the row of pixels to be decoded has been entropy decoded,

upon determining the row of blocks of the plurality of encoded blocks including the row of pixels to be decoded has been entropy decoded, inverse transform only pixels of the row of pixels to be decoded that are included in the column start, the column end or the columns therebetween, and

upon determining the row of blocks of the plurality of encoded blocks including the row of pixels to be decoded has not been entropy decoded, entropy decode the row of blocks of the plurality of encoded blocks including the row of pixels to be decoded and inverse transform only pixels of the row of pixels to be decoded that are included in the column start, the column end or the columns therebetween; and

upon determining the row of pixels to be decoded is not included in the row start, the row end or the rows therebetween, skip processing of the row of pixels to be decoded.

19. A non-transitory computer-readable storage medium having stored thereon computer executable program code which, when executed on a computer system, causes the computer system to perform steps comprising:

receiving a bitstream including a plurality of encoded blocks representing an image;

receiving a boundary indicator representing a cropped portion of the image;

determining a row start and a row end within the image based on the boundary indicator; and

in a single decoding pass,

selecting a row of pixels to be decoded,

determining whether the row of pixels to be decoded is included in the row start, the row end or the rows therebetween,

upon determining the row of pixels to be decoded is included in the row start, the row end or the rows therebetween,

determining whether a row of blocks of the plurality of encoded blocks including the row of pixels to be decoded has been entropy decoded and has been inverse discrete transformed,

upon determining the row of blocks of the plurality of encoded blocks including the row of pixels to be decoded has been entropy decoded and has been inverse transformed, upsample and color convert for display the row of pixels to be decoded, and

upon determining the row of blocks of the plurality of encoded blocks including the row of pixels to be decoded has not been entropy decoded and inverse transformed,

entropy decode the row of blocks of the plurality of encoded blocks including the row of pixels to be decoded to generate a row of entropy decoded blocks,

inverse transform the row of entropy decoded blocks including the row of pixels to be decoded to generate a plurality of inverse transformed blocks, and

upsample and color convert, for display, pixels included in a portion of the plurality of inverse transformed blocks that include the row of pixels to be decoded, and

upon determining the row of pixels to be decoded is not included in the row start, the row end or the rows therebetween, skip entropy decoding, inverse transforming and transforming of the row of pixels to be decoded.

20. The non-transitory computer-readable storage medium of claim 19 , the steps further comprising:

determining a column start and a column end within the image based on the boundary indicator;

in the single decoding pass and when inverse transforming the row of pixels to be decoded,

determining whether a pixel in the row of pixels to be decoded is included in the column start, the column end or the columns therebetween,

upon determining the pixel in the row of pixels to be decoded is included in the column start, the column end or the columns therebetween, inverse transform the pixel to be decoded, and

upon determining the pixel in the row of pixels to be decoded is not included in the column start, the column end or the columns therebetween, skip processing of the pixel to be decoded.

Assignments (2)
CHANGE OF NAME Recorded Dec 5, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044695/0115 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 16, 2015
From: SARETT, MATT; SCROGGINS, LEON; SOLLENBERGER, DEREK; REED, MICHAEL ROLAND
To: GOOGLE INC.
Reel/Frame 037299/0579 →