IP Library Granted Patent US 10,873,754
Granted Patent B2
US 10,873,754 · App. 16/216,967 · Granted Dec 22, 2020

Low latency video codec and transmission with parallel processing

Inventors: Michael W. Bruns (Portland, OR); Martin A. Hunt (Austin, TX); Manjunath H. Siddaiah (Cedar Park, TX); John C. Sievers (Lynnfield, MA)
Assignee: Coherent Logix, Incorporated
H04N19/436G06F9/3877H04N19/107H04N19/146H04N19/147H04N19/176
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 10,873,754
App. No.
16/216,967
Granted
Dec 22, 2020
Kind
B2
Abstract

Methods and devices are described for a parallel multi-processor encoder system for encoding video data, wherein the video data comprises a sequence of frames, wherein each frame comprises a plurality of blocks of pixels in sequential rows. For each frame, the system may divide the plurality of blocks into a plurality of subsets of blocks, wherein each subset of blocks is allocated to a respective processor of the parallel multi-processor system. Each respective processor of the parallel multi-processor system may sequentially encode rows of the subset of blocks allocated to the respective processor and sequentially transmit each encoded row of blocks as a bit stream to a decoder on a channel. For each row, the respective encoded row of blocks may be transmitted to the decoder for each processor prior to transmission of the next sequential respective encoded row of blocks for any processor. Additionally, a similar parallel multi-processor decoder system is described.

Claims (66)

1. A method for encoding video data, wherein the video data comprises a sequence of frames, wherein each frame comprises a plurality of blocks of pixels in sequential rows, the method comprising:

for each frame:

dividing the plurality of blocks into a plurality of subsets of blocks, wherein each subset of blocks is allocated to a respective processor of a parallel multi-processor system;

by each respective processor of the parallel multi-processor system:

sequentially encoding rows of the subset of blocks allocated to the respective processor, wherein said encoding comprises encoding non-intra-refresh blocks with or without reference to a previous encoded frame, and wherein intra-refresh blocks are encoded without reference to the previous encoded frame; and

sequentially transmitting each encoded row of blocks as a bit stream to a decoder on a channel; and

implementing rate control for each row of blocks of the frame, independent of the division of the frame into subsets of blocks; and

storing the encoded rows of the subsets of blocks as a respective encoded frame in a memory buffer accessible to the processors of the parallel multiprocessor system,

wherein, for each row, the encoded row of blocks of the respective row is transmitted to the decoder for each processor prior to transmission of the encoded row of blocks of a row sequential to the respective row for any processor.

2. The method of claim 1 ,

wherein a second subset of the plurality of blocks comprise intra-refresh blocks, wherein the remaining blocks of the plurality of blocks outside the second subset comprise non-intra-refresh blocks, and wherein the intra-refresh blocks are equitably distributed between the rows of the frame.

3. The method of claim 2 ,

wherein, for each sequential frame, the blocks comprising the second subset of the plurality of blocks are allocated to a different column or columns of the sequential frame.

4. The method of claim 1 , wherein said rate control serves to promote comparable coded picture buffer occupancy for each of the rows of the frame.

5. The method of claim 1 , wherein said independent rate control is used to maintain a similar bit rate for each of the rows of the frame.

6. The method of claim 1 , the method further comprising:

performing video analysis to determine encoding hints for each row of blocks; and

communicating the respective encoding hints for each row of blocks to each processor of the parallel multi-processor system.

7. The method of claim 1 ,

wherein each subset of the plurality of blocks comprises one or more columns of blocks of their respective frame.

8. The method of claim 1 ,

wherein sequentially transmitting each encoded row of blocks as the bit stream to the decoder comprises tagging the encoded row of blocks with an identifier of a column location of the encoded row of blocks within the frame and transmitting the encoded row of blocks to an encoded row buffer for transmission to the decoder.

9. A parallel multi-processor video encoder system, comprising:

a plurality of parallel processors coupled to respective non-transitory computer readable memory media;

wherein the parallel multi-processor video encoder system is configured to encode video data comprising a sequence of frames, wherein each frame comprises a plurality of blocks of pixels in sequential columns,

wherein, in encoding the video data, the parallel multi-processor video encoder system is configured to:

for each frame:

divide the plurality of blocks into a plurality of subsets of blocks, wherein each subset of blocks is allocated to a respective processor of the plurality of parallel processors; and

implement rate control for each column of blocks of the frame, independent of the division of the frame into subsets of blocks;

by each processor of the plurality of parallel processors:

sequentially encode columns of the subset of blocks allocated to the respective processor, wherein non-intra-refresh blocks are encoded based on an encoded frame corresponding to a previous frame, and wherein intra-refresh blocks are encoded without reference to the encoded frame corresponding to the previous frame; and

sequentially transmit each encoded column of blocks as a bit stream to a decoder on a channel; and

store the encoded columns of the subsets of blocks as a respective encoded frame in a memory buffer accessible to plurality of parallel processors;

wherein, for each column, the encoded column of blocks of the respective column is transmitted to the decoder for each processor prior to transmission of the encoded column of blocks of a column sequential to the respective column for any processor.

10. The parallel multi-processor video encoder system of claim 9 , wherein said rate control serves to promote comparable coded picture buffer occupancy for each of the columns of the frame.

11. The parallel multi-processor video encoder system of claim 9 , wherein said rate control serves to maintain a similar bit rate for each of the columns of the frame.

12. The parallel multi-processor video encoder system of claim 9 ,

wherein a second subset of the plurality of blocks comprise intra-refresh blocks, wherein the remaining blocks of the plurality of blocks outside the second subset comprise non-intra-refresh blocks, and wherein the intra-refresh blocks are equitably distributed between the columns of the frame.

13. The parallel multi-processor video encoder system of claim 9 ,

wherein the parallel multi-processor video encoder system is further configured to:

perform video analysis to determine encoding hints for each column of blocks; and

for each column of blocks, communicate the respective encoding hints for each column to each of the plurality of parallel processors.

14. An encoder device, comprising:

a non-transitory computer-readable memory medium;

a plurality of processors of a parallel multi-processor system operably coupled to the memory medium; and

a radio, wherein the encoder device is configured to:

receive video data comprising a sequence of frames, wherein each frame comprises a plurality of blocks of pixels in sequential rows;

for each frame:

divide the plurality of blocks into a plurality of subsets of blocks, wherein each subset of blocks is allocated to a respective processor of the parallel multi-processor system;

by each respective processor of the parallel multi-processor system:

sequentially encode rows of the subset of blocks allocated to the respective processor, wherein said encoding comprises encoding non-intra-refresh blocks with or without reference to a previous encoded frame, and wherein intra-refresh blocks are encoded without reference to the previous encoded frame; and

using the radio, sequentially transmit each encoded row of blocks as a bit stream to a decoder on a channel; and

implement rate control for each row of blocks of the frame, independent of the division of the frame into subsets of blocks; and

store the encoded rows of the subsets of blocks as a respective encoded frame in a memory buffer accessible to the processors of the parallel multiprocessor system,

wherein, for each row, the encoded row of blocks of the respective row is transmitted to the decoder for each processor prior to transmission of the encoded row of blocks of a row sequential to the respective row for any processor.

15. The encoder device of claim 14 ,

wherein a second subset of the plurality of blocks comprise intra-refresh blocks, wherein the remaining blocks of the plurality of blocks outside the second subset comprise non-intra-refresh blocks, and wherein the intra-refresh blocks are equitably distributed between the rows of the frame.

16. The encoder device of claim 15 ,

wherein, for each sequential frame, the blocks comprising the second subset of the plurality of blocks are allocated to a different column or columns of the sequential frame.

17. The encoder device of claim 14 , wherein said rate control serves to promote comparable coded picture buffer occupancy for each of the rows of the frame.

18. The encoder device of claim 14 , wherein said independent rate control is used to maintain a similar bit rate for each of the rows of the frame.

19. The encoder device of claim 14 , wherein the encoder device is further configured to:

perform video analysis to determine encoding hints for each row of blocks; and

communicate the respective encoding hints for each row of blocks to each processor of the parallel multi-processor system.

20. The encoder device of claim 14 ,

wherein sequentially transmitting each encoded row of blocks as the bit stream to the decoder comprises tagging the encoded row of blocks with an identifier of a column location of the encoded row of blocks within the frame and transmitting the encoded row of blocks to an encoded row buffer for transmission to the decoder.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 8, 2025
From: PACIFIC CAP ACQUISITION FUND, LLC
To: HYPERX HOLDINGS LLC
Reel/Frame 072342/0090 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 6, 2025
From: COHERENT LOGIX, INC.
To: PACIFIC CAP ACQUISITION FUND, LLC
Reel/Frame 072370/0394 →
SECURITY INTEREST Recorded Apr 11, 2024
From: COHERENT LOGIX, INCORPORATED
To: ACP POST OAK CREDIT I LLC
Reel/Frame 067097/0363 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 6, 2019
From: BRUNS, MICHAEL W.; HUNT, MARTIN A.; SIDDAIAH, MANJUNATH H.; SIEVERS, JOHN C.
To: COHERENT LOGIX, INCORPORATED
Reel/Frame 048515/0808 →
Continuity (3)
Provisional Application 62597457 · Dec 12, 2017
Provisional Application 62661779 · Apr 24, 2018
Related Publication 20190182495A1 · Jun 13, 2019
Cited By (1)
US 12,425,611