IP Library Granted Patent US 9,736,488
Granted Patent B2
US 9,736,488 · App. 14/092,524 · Granted Aug 15, 2017

Decoding for high efficiency video transcoding

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,736,488
App. No.
14/092,524
Granted
Aug 15, 2017
Kind
B2
Abstract

A two-stage context adaptive binary arithmetic coding (CABAC) parser is provided to efficiently transcode an input video bitstream that is partitioned into tiles into a non-tiled based video bitstream. A picture of the input video bitstream is partitioned into one or more tiles, each of which has multiple coding tree units (CTUs) according to the HEVC standard. The two-stage CABAC parser parses the input video bitstream in tile scan order in the first stage and generates a list of identified CTUs, whose CABAC state data are saved for the second stage parsing. In the second stage parsing, the two-stage parser parses the same input video bitstream in raster scan order using the saved CABAC state data of the identified CTUs.

Claims (88)

1. A computer-implemented method for transcoding a tile based video bitstream, the method comprising:

receiving a picture of an input video bitstream at a first parser processor, the picture comprising a plurality of coding blocks partitioned into a plurality of tiles, each tile comprising tile rows of coding blocks;

parsing, performed by the first parser processor, the plurality of coding blocks of the picture in a tile scan order to produce a plurality of subsets of entropy coding state data, each subset of entropy coding state data associated with a corresponding tile row of coding blocks of each tile;

generating, performed by the first parser processor, a list of identified coding blocks in the tile scan order based on the parsing of the plurality of coding blocks, wherein the list of identified coding blocks includes a plurality of identifiers, each identifier associated with a corresponding first coding block of each tile row of coding blocks of each tile, each identifier indicating a position of the corresponding first coding block in the input video bitstream;

storing, performed by the first parser processor, the plurality of subsets of entropy coding state data and the list of identified coding blocks in a data repository coupled to the first parser processor and to a second parser processor, wherein each identifier of the list of identified coding blocks is associated with a corresponding subset of entropy coding state data;

receiving the picture of the input video bitstream at the second parser processor;

parsing, performed by the second parser processor, the same plurality of coding blocks of the picture in a raster scan order by using the list of identified coding blocks and the plurality of subsets of entropy coding state data stored in the data repository to produce a first portion of a parsed video bitstream,

wherein the parsing the same plurality of coding blocks comprises:

sorting, performed by the second parser processor, the list of identified coding blocks into the raster scan order, wherein a sequence of tile rows in the raster scan order corresponds to a full row of coding blocks that spans the picture, and

for each tile row in the full row of coding blocks that spans the picture:

identifying a present identifier from the sorted list of identified coding blocks that corresponds to a present position in the input video bitstream,

restoring a selected subset of entropy coding state data that corresponds to the present identifier, and

decoding syntax elements of a set of coding blocks that correspond to a present tile row using the selected subset of entropy coding state data.

2. The method of claim 1 , wherein a coding block of the picture is a coding tree unit (CTU) of the picture, the plurality of the coding blocks of the picture being structured in a quad tree structure.

3. The method of claim 1 , wherein

the first parser processor is configured to implement CABAC (context adaptive binary arithmetic coding).

4. The method of claim 1 , wherein parsing the same plurality of coding blocks of the picture in a raster scan order further comprises:

removing the selected subset of entropy coding state data from the data repository, after the selected subset of entropy coding state data has been restored.

5. The method of claim 1 , further comprising:

obtaining tile entry point offsets associated with the picture of the input video bitstream, a title entry point offset indicating start of a tile in the picture of the input video bitstream.

6. The method of claim 5 , wherein obtaining tile entry point offsets associated with the picture comprises:

parsing tile headers of the tiles of the picture, wherein the tile header of a tile contains the tile entry point offset of the tile.

7. The method of claim 5 , wherein obtaining tile entry point offsets associated with the picture further comprises:

parsing the plurality of the coding blocks of the picture of the input video bitstream in a tile scan order; and

generating the tile entry point offsets based on the parsing.

8. The method of claim 1 , further comprising:

parsing, performed by a third parser processor, a second full row of coding blocks of the same plurality of coding blocks of the picture in the raster scan order by using the list of identified coding blocks and the plurality of subsets of entropy coding state data stored in the data repository to produce a second portion of the parsed video bitstream, wherein

the second full row is a neighboring row of a first full row parsed by the second processor,

the parsing of the second full row by the third parser processor begins after the second parser processor has parsed a first and second coding block in the first full row, and

the parsing by the third parser processor continues in parallel with the parsing by the second parser processor; and

parsing, performed by the second parser processor, a third full row of coding blocks of the same plurality of coding blocks in the raster scan order to produce a third portion of the parsed video bitstream, wherein

the third full row is a neighboring row of the second full row,

the parsing of the third full row by the second parser processor begins after the third parser processor has parsed a first and second coding block in the second full row, and

the parsing by the second parser processor continues in parallel with the parsing by the third parser processor.

9. The method of claim 8 , further comprising:

synchronizing data dependencies between the first and second portions of the parsed video bitstream to output a first portion of a final parsed video bitstream; and

synchronizing data dependencies between the second and third portions of the parsed video bitstream to output a second portion of the final parsed video bitstream.

10. The method of claim 8 , wherein the second parser processor and the third parser processor continue to parse neighboring full rows in an alternating manner until all full rows of the picture are parsed in the raster scan order.

11. The method of claim 8 , wherein the first parser processor operates ahead of the second and third parser processors, and the second and third parser processors wait for each other to complete parsing of a first and second coding block of a respective neighboring full row before beginning parsing of a next neighboring full row.

12. The method of claim 1 , wherein each of the plurality of subsets of entropy coding state data comprises one or more of a group including: context models, arithmetic coder variables, contextual variables, and a current bitstream position.

13. The method of claim 1 , wherein the first parser processor stores each subset of entropy coding state data at a start of a corresponding tile row before any bin has been decoded.

14. A non-transitory computer-readable storage medium storing computer program instructions, executed by a processor, for transcoding a tile based video bitstream, the computer program instructions comprising instructions for:

receiving a picture of an input video bitstream, the picture comprising a plurality of coding blocks partitioned into a plurality of tiles, each tile comprising tile rows of coding blocks;

parsing the plurality of coding blocks of the picture in a tile scan order to produce a plurality of subsets of entropy coding state data, each subset of entropy coding state data associated with a corresponding tile row of coding blocks of each tile;

generating a list of identified coding blocks in the tile scan order based on the parsing of the plurality of coding blocks, wherein the list of identified coding blocks includes a plurality of identifiers, each identifier associated with a corresponding first coding block of each tile row of coding blocks of each tile, each identifier indicating a position of the corresponding first coding block in the input video bitstream;

storing the plurality of subsets of entropy coding state data and the list of identified coding blocks in a data repository, wherein each identifier of the list of identified coding blocks is associated with a corresponding subset of entropy coding state data;

parsing the same plurality of coding blocks of the picture in a raster scan order by using the list of identified coding blocks and the plurality of subsets of entropy coding state data stored in the data repository to produce a first portion of a parsed video bitstream,

wherein the parsing the same plurality of coding blocks comprises:

sorting the list of identified coding blocks into the raster scan order, wherein a sequence of tile rows in the raster scan order corresponds to a full row of coding blocks that spans the picture, and

for each tile row in the full row of coding blocks that spans the picture:

identifying a present identifier from the sorted list of identified coding blocks that corresponds to a present position in the input video bitstream,

restoring a selected subset of entropy coding state data that corresponds to the present identifier, and

decoding syntax elements of a set of coding blocks that correspond to a present tile row using the selected subset of entropy coding state data.

15. The computer-readable storage medium of claim 14 , wherein a coding block of the picture is a coding tree unit (CTU) of the picture, the plurality of the coding blocks of the picture being structured in a quad tree structure.

16. The computer-readable storage medium of claim 14 , wherein the computer program instructions for parsing the same plurality of coding blocks of the picture in a raster scan order further comprise computer program instructions for:

removing the selected subset of entropy coding state data from the data repository, after the selected subset of entropy coding state data has been restored.

17. The computer-readable storage medium of claim 14 , further comprising computer program instructions for:

obtaining tile entry point offsets associated with the picture of the input video bitstream, a title entry point offset indicating start of a tile in the picture of the input video bitstream.

18. The computer-readable storage medium of claim 17 , wherein the computer program instructions for obtaining tile entry point offsets associated with the picture comprise computer program instructions for:

parsing tile headers of the tiles of the picture, wherein the tile header of a tile contains the tile entry point offset of the tile.

19. The computer-readable storage medium of claim 17 , wherein the computer program instructions for obtaining tile entry point offsets associated with the picture further comprise computer program instructions:

parsing the plurality of the coding blocks of the picture of the input video bitstream in a tile scan order; and

generating the tile entry point offsets based on the parsing.

20. A computer system for transcoding a tile based video bitstream, the system comprising:

a processor; and

a non-transitory computer-readable storage medium storing computer program instructions, executed by the processor, the computer program instructions comprising instructions for:

receiving a picture of an input video bitstream, the picture comprising a plurality of coding blocks partitioned into a plurality of tiles, each tile comprising tile rows of coding blocks;

parsing the plurality of coding blocks of the picture in a tile scan order to produce a plurality of subsets of entropy coding state data, each subset of entropy coding state data associated with a corresponding tile row of coding blocks of each tile;

generating a list of identified coding blocks in the tile scan order based on the parsing of the plurality of coding blocks, wherein the list of identified coding blocks includes a plurality of identifiers, each identifier associated with a corresponding first coding block of each tile row of coding blocks of each tile, each identifier indicating a position of the corresponding first coding block in the input video bitstream;

storing the plurality of subsets of entropy coding state data and the list of identified coding blocks in a data repository, wherein each identifier of the list of identified coding locks is associated with a corresponding subset of entropy coding state data;

parsing the same plurality of coding blocks of the picture in a raster scan order by using the list of identified coding blocks and the plurality of subsets of entropy coding state data stored in the data repository to produce a first portion of a parsed video bitstream,

wherein the parsing the same plurality of coding blocks comprises:

sorting the list of identified coding blocks into the raster scan order, wherein a sequence of tile rows in the raster scan order corresponds to a full row of coding blocks that spans the picture, and

for each tile row in the full row of coding blocks that spans the picture:

 identifying a present identifier from the sorted list of identified coding blocks that corresponds to a present position in the input video bitstream,

 restoring a selected subset of entropy coding state data that corresponds to the present identifier, and

 decoding syntax elements of a set of coding blocks that correspond to a present tile row using the selected subset of entropy coding state data.

21. The system of claim 20 , wherein the computer program instructions for parsing the plurality of coding blocks of the picture comprise computer program instructions for:

identifying a subset of coding blocks from the plurality of coding blocks; and

storing identifiers of the subset of coding blocks in the list of identified coding blocks, wherein the list of identified coding blocks is stored in the data repository.

22. The system of claim 20 , wherein

the list of identified coding blocks is generated in tile scan order.

23. The system of claim 20 , wherein the computer program instructions for parsing the same plurality of coding blocks of the picture in a raster scan order comprise computer program instructions for:

sorting the list of identified coding blocks into the raster scan order; and

copying entropy coding state data associated with each identified coding block from the data repository;

for a full row of coding blocks that spans the picture:

restoring entropy coding state data for a selected coding block from the sorted list of the identified coding blocks, the selected coding block having a position within the full row; and

decoding syntax elements of coding blocks subsequent to the selected coding block that also have a position within the full row using the copied entropy coding state data of the selected coding block from the sorted list.

Assignments (7)
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040626 FRAME: 0683. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME EFFECTIVE NOVEMBER 7, 2016. Recorded Jan 12, 2017
From: NXP SEMICONDUCTORS USA, INC. (MERGED INTO); FREESCALE SEMICONDUCTOR, INC. (UNDER)
To: NXP USA, INC.
Reel/Frame 041414/0883 →
CHANGE OF NAME Recorded Nov 16, 2016
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 040626/0683 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
CHANGE OF NAME Recorded Jan 27, 2015
From: ZENVERGE, INC.
To: ZENVERGE, LLC
Reel/Frame 034817/0375 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2015
From: ZENVERGE LLC
To: FREESCALE SEMICONDUCTOR INC.
Reel/Frame 034766/0476 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 28, 2014
From: HOANG, DZUNG
To: ZENVERGE, INC.
Reel/Frame 032322/0389 →