×

Systems and methods of encoding multiple video streams for adaptive bitrate streaming

  • US 10,178,399 B2
  • Filed: 05/16/2016
  • Issued: 01/08/2019
  • Est. Priority Date: 02/28/2013
  • Status: Expired due to Fees
First Claim
Patent Images

1. A source encoder configured to encode source video as a number of alternative video streams, the source encoder comprising:

  • memory containing a source encoder application;

    a shared memory; and

    a parallel processing system configured by the source encoding application to;

    receive multimedia content, where the multimedia content comprises source video data having a primary resolution;

    collect statistics on source video data and write the statistics to shared memory in a first pass through the received multimedia content;

    determine initial encoding information for source video data and write the initial encoding information to shared memory during the first pass through the received multimedia content; and

    encode the source video data in parallel using collected statistics and initial encoding information to produce a plurality of alternative video streams during a second pass through the received multimedia content with a plurality of parallel encoding processes, where the encoding of the source video utilizes additional encoding information, the parallel encoding processes are configured to reuse additional encoding information that has already been determined for a portion of video by another parallel encoding process and stored in the shared memory, and the parallel encoding processes are configured to generate additional encoding information that has not already been determined for a portion of video by another parallel encoding process and store the generated additional encoding information in the shared memory;

    wherein the parallel encoding processes being configured to generate additional encoding information that has not already been determined for a portion of video by another parallel encoding process further comprises determining a Coding Tree Unit (CTU) size for encoding a portion of a frame of video in the source video data;

    wherein determining a CTU size for encoding a portion of a frame of video in the source video data comprises;

    selecting a portion of a frame of video in the source video data to encode as an output CTU in a first output stream;

    checking if a size has been determined for a similar CTU previously encoded in a second output stream for the selected portion of a frame of video;

    comparing the resolution of the first output stream to the resolution of the second output stream if a size has been determined for the similar CTU; and

    scaling the CTU size of the similar CTU and applying the scaled CTU size to encoding the portion of the frame of video as the output CTU if the resolution of the first output stream is not the same resolution as the second output stream;

    wherein the parallel processing system being configured to determine initial encoding information for source video data further comprises the parallel processing system configured to determine a mode distribution for at least one frame of video in at least one of the plurality of alternative video streams; and

    wherein the parallel processing system being configured to encode the source video data in parallel using collected statistics and initial encoding information to produce a plurality of alternative video streams further comprises the parallel processing system being configured to;

    maintain a count of blocks processed in a frame of video in an alternative video stream;

    determine a threshold number of blocks based on the mode distribution; and

    adjust criteria for block type decisions if the count of blocks meets the threshold number of blocks.

View all claims
  • 5 Assignments
Timeline View
Assignment View
    ×
    ×