IP Library Granted Patent US 8,892,764
Granted Patent B1
US 8,892,764 · App. 14/148,344 · Granted Nov 18, 2014

Dynamic selection of parameter sets for transcoding media data

Inventor: Matthew Robert Ebersviller (Minneapolis, MN)
Assignee: Google Inc.
H04N19/00472H04N19/00012
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 8,892,764
App. No.
14/148,344
Granted
Nov 18, 2014
Kind
B1
Abstract

An iterative operation is performed at a computing device to identify a parameter set for an initial segment. A parameter set for an initial segment includes a plurality of encoding parameters and values assigned to the encoding parameters. The initial segment is re-encoded using the parameter set, thereby generating a transcoded segment. In some embodiments, the transcoded segment is transmitted to a client computing device that presents media represented by the transcoded segment.

Claims (145)

1. A method, comprising:

receiving, by a device including a processor, a media data stream; and

performing, by the device, an iterative operation for transcoding the media data stream into a transcoded media data stream, wherein each iteration of the iterative operation comprises:

receiving a current segment of the media data stream;

transcoding the current segment into a first transcoded segment using a current parameter set that was employed to transcode a previous segment of the media data stream;

determining whether the current parameter set is a final parameter set;

in response to determining that the current parameter is the final parameter set, outputting the first transcoded segment as part of the transcoded media data stream; and

in response to determining that the current parameter is not the final parameter set:

determining a first fitness score of the first transcoded segment;

determining whether the first fitness score exceeds a fitness score threshold;

mutating the current parameter set into a mutated parameter set;

transcoding the current segment into a second transcoded segment using the mutated parameter set;

determining a second fitness score of the second transcoded segment;

determining whether the second fitness score is greater than the first fitness score;

in response to determining that the second fitness score is not greater than the first fitness score, outputting the first transcoded segment as part of the transcoded media data stream; and

in response to determining that the second fitness score is greater than the first fitness score:

setting the mutated parameter set as the current parameter set;

outputting the second transcoded segment as part of the transcoded media data stream;

determining whether the second fitness score exceeds a fitness score threshold; and

in response to determining that the second fitness score exceeds the fitness score threshold setting the current parameter set as the final parameter set.

2. The method of claim 1 , wherein the respective current segments at each iteration are part of a series of segments of the media data stream.

3. The method of claim 1 , further comprising: transmitting, by the device, the transcoded media data stream to a client device via a computer communications network.

4. The method of claim 1 ,

wherein the media data stream represents live video; and

wherein the transcoded media data stream represents live video.

5. The method of claim 1 , wherein the transcoded media data stream has a lower bit rate than the media data stream.

6. A non-transitory computer readable medium having instructions stored thereon that, in response to execution, cause system including a processor to perform operations comprising:

receiving a media data stream; and

performing an iterative operation for transcoding the media data stream into a transcoded media data stream, wherein each iteration of the iterative operation comprises:

receiving a current segment of the media data stream;

transcoding the current segment into a first transcoded segment using a current parameter set that was employed to transcode a previous segment of the media data stream;

determining whether the current parameter set is a final parameter set;

in response to determining that the current parameter is the final parameter set, outputting the first transcoded segment as part of the transcoded media data stream; and

in response to determining that the current parameter is not the final parameter set:

determining a first fitness score of the first transcoded segment;

determining whether the first fitness score exceeds a fitness score threshold;

mutating the current parameter set into a mutated parameter set;

transcoding the current segment into a second transcoded segment using the mutated parameter set;

determining a second fitness score of the second transcoded segment;

determining whether the second fitness score is greater than the first fitness score;

in response to determining that the second fitness score is not greater than the first fitness score, outputting the first transcoded segment as part of the transcoded media data stream; and

in response to determining that the second fitness score is greater than the first fitness score:

setting the mutated parameter set as the current parameter set;

outputting the second transcoded segment as part of the transcoded media data stream;

determining whether the second fitness score exceeds a fitness score threshold; and

in response to determining that the second fitness score exceeds the fitness score threshold setting the current parameter set as the final parameter set.

7. The non-transitory computer readable medium of claim 6 , wherein the respective current segments at each iteration are part of a series of segments of the media data stream.

8. The non-transitory computer readable medium of claim 6 , further comprising:

transmitting, by the device, the transcoded media data stream to a client device via a computer communications network.

9. The non-transitory computer readable medium of claim 6 ,

wherein the media data stream represents live video; and

wherein the transcoded media data stream represents live video.

10. The non-transitory computer readable medium of claim 6 , wherein the transcoded media data stream has a lower bit rate than the media data stream.

11. A system, comprising:

a memory, communicatively coupled to a processor, the memory having stored therein executable instructions, comprising:

a parameter identification module configured to:

receive a media data stream; and

perform an iterative operation for transcoding the media data stream into a transcoded media data stream, wherein each iteration of the iterative operation comprises:

receive a current segment of the media data stream;

transcode the current segment into a first transcoded segment using a current parameter set that was employed to transcode a previous segment of the media data stream;

determine whether the current parameter set is a final parameter set;

in response to a determination that the current parameter is the final parameter set, output the first transcoded segment as part of the transcoded media data stream; and

in response to a determination that the current parameter is not the final parameter set:

 calculate a first fitness score of the first transcoded segment;

 determine whether the first fitness score exceeds a fitness score threshold;

 mutate the current parameter set into a mutated parameter set;

 transcode the current segment into a second transcoded segment using the mutated parameter set;

 determine a second fitness score of the second transcoded segment;

 determine whether the second fitness score is greater than the first fitness score;

 in response to a determination that the second fitness score is not greater than the first fitness score, outputting the first transcoded segment as part of the transcoded media data stream; and

 in response to a determination that the second fitness score is greater than the first fitness score:

 set the mutated parameter set as the current parameter set;

 output the second transcoded segment as part of the transcoded media data stream;

 determine whether the second fitness score exceeds a fitness score threshold; and

 in response to a determination that the second fitness score exceeds the fitness score threshold setting the current parameter set as the final parameter set.

12. The system of claim 11 , wherein the respective current segments at each iteration are part of a series of segments of the media data stream.

13. The system of claim 11 ,

wherein the media data stream represents live video; and

wherein the transcoded media data stream represents live video.

14. The system of claim 11 , wherein the transcoded media data stream has a lower bit rate than the media data stream.

15. A method, comprising:

receiving, by a device including a processor, a media data stream; and

performing, by the device, an iterative operation for transcoding the media data stream into a transcoded media data stream, wherein each iteration of the iterative operation comprises:

receiving a current series of segments of the media data stream;

determine whether a final parameter set has been selected;

in response to determining that the final parameter set has been selected:

transcoding each segment in the current series of segments into a current series of transcoded segments using the final parameter set; and

outputting the current series of transcoded segments as part of the transcoded media data stream; and

in response to determining that the final parameter set has not been selected:

transcoding each segment in the current series of segments into the current series of transcoded segments using different parameter sets in a current generation of parameter sets;

outputting the current series of transcoded segments as part of the transcoded media data stream;

determining respective fitness scores of transcoded segments in the current series of transcoded segments;

determining whether at least one of the fitness scores exceeds a fitness score threshold;

determining whether a generation limit is reached;

in response to determining that the generation limit has been reached or at least one of the fitness scores exceeds the fitness score threshold, selecting a parameter set employed for encoding a segment into a transcoded segment having a fitness score greater than each other transcoded segment in the current series of transcoded segments as the final parameter set; and

in response to determining that the generation limit has not been reached and none of the fitness scores exceeds the fitness score threshold:

determining selection probabilities of the parameter sets in the current generation of parameter sets; and

performing the following steps until a new generation of parameter sets includes a threshold number of parameter sets:

 selecting parent parameter sets based on the selection probabilities of the parameter sets in the current generation of parameter sets; and

 generating a child parameter set in the new generation of parameter sets by recombining values of encoding parameters in the parent parameter sets; and

setting the new generation of parameter sets as the current generation of parameter sets.

16. A non-transitory computer readable medium having instructions stored thereon that, in response to execution, cause system including a processor to perform operations comprising:

receiving a media data stream; and

performing an iterative operation for transcoding the media data stream into a transcoded media data stream, wherein each iteration of the iterative operation comprises:

receiving a current series of segments of the media data stream;

determining whether a final parameter set has been selected;

in response to determining that the final parameter set has been selected:

transcoding each segment in the current series of segments into a current series of transcoded segments using the final parameter set; and

outputting the current series of transcoded segments as part of the transcoded media data stream; and

in response to determining that the final parameter set has not been selected:

transcoding each segment in the current series of segments into the current series of transcoded segments using different parameter sets in a current generation of parameter sets;

outputting the current series of transcoded segments as part of the transcoded media data stream;

calculating respective fitness scores of transcoded segments in the current series of transcoded segments;

determining whether at least one of the fitness scores exceeds a fitness score threshold;

determining whether a generation limit is reached;

in response to determining that the generation limit has been reached or at least one of the fitness scores exceeds the fitness score threshold, selecting a parameter set employed for encoding a segment into a transcoded segment having a fitness score greater than each other transcoded segment in the current series of transcoded segments as the final parameter set; and

in response to determining that the generation limit has not being reached and none of the fitness scores exceeds the fitness score threshold:

determining selection probabilities of the parameter sets in the current generation of parameter sets; and

performing the following steps until a new generation of parameter sets includes a threshold number of parameter sets:

 selecting parent parameter sets based on the selection probabilities of the parameter sets in the current generation of parameter sets; and

 generating a child parameter set in the new generation of parameter sets by recombining values of encoding parameters in the parent parameter sets; and

setting the new generation of parameter sets as the current generation of parameter sets.

17. A system, comprising:

a memory, communicatively coupled to a processor, the memory having stored therein executable instructions, comprising:

a parameter identification module configured to:

receive a media data stream; and

perform an iterative operation for transcoding the media data stream into a transcoded media data stream, wherein each iteration of the iterative operation comprises:

receive a current series of segments of the media data stream;

determine whether a final parameter set has been selected;

in response to a determination that the final parameter set has been selected:

transcode each segment in the current series of segments into a current series of transcoded segments using the final parameter set; and

output the current series of transcoded segments as part of the transcoded media data stream;

in response to a determination that the final parameter set has not been selected:

transcode each segment in the current series of segments into the current series of transcoded segments using different parameter sets in a current generation of parameter sets;

output the current series of transcoded segments as part of the transcoded media data stream;

determine respective fitness scores of transcoded segments in the current series of transcoded segments;

determine whether at least one of the fitness scores exceeds a fitness score threshold;

determine whether a generation limit is reached;

in response to a determination that the generation limit has been reached or at least one of the fitness scores exceeds the fitness score threshold, selecting a parameter set employed for encoding a segment into a transcoded segment having a fitness score greater than each other transcoded segment in the current series of transcoded segments as the final parameter set;

in response to a determination that the generation limit has not being reached and none of the fitness scores exceeds the fitness score threshold:

 determine selection probabilities of the parameter sets in the current generation of parameter sets; and

 perform the following until a new generation of parameter sets includes a threshold number of parameter sets:

 select parent parameter sets based on the selection probabilities of the parameter sets in the current generation of parameter sets; and

 generate a child parameter set in the new generation of parameter sets by recombining values of encoding parameters in the parent parameter sets; and

 set the new generation of parameter sets as the current generation of parameter sets.

Assignments (3)
CHANGE OF NAME Recorded Oct 2, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044277/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 19, 2014
From: SWARMCAST, INC.
To: GOOGLE INC.
Reel/Frame 033563/0159 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 18, 2014
From: EBERSVILLER, MATTHEW
To: SWARMCAST, INC.
Reel/Frame 033551/0761 →
Continuity (2)
Continuation 12877594 · Sep 8, 2010
Provisional Application 61240528 · Sep 8, 2009