US 12,342,011 B1
Dynamic codec selection
Jian Wang, Burnaby (CA); and Giridhar Kalpathy Narayanan, Sammamish, WA (US)
Assigned to Amazon Technologies, Inc., Seattle, WA (US)
Filed by Amazon Technologies, Inc., Seattle, WA (US)
Filed on Jun. 30, 2023, as Appl. No. 18/345,532.
Int. Cl. H04N 21/2343 (2011.01); H04N 21/234 (2011.01); H04N 21/418 (2011.01)
CPC H04N 21/2343 (2013.01) [H04N 21/23418 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A computer-implemented method comprising:
receiving a request to begin video streaming;
calculating a first encoding score for a first execution of a first codec at a computing device, wherein calculating the first encoding score comprises:
calculating a first quality metric that indicates a first encoding quality of a first video portion during the first execution;
calculating a first computing resource usage metric that indicates a first quantity of processor cycles used to encode the first video portion during the first execution; and
combining the first quality metric and the first computing resource usage metric as the first encoding score;
calculating a second encoding score for a second execution of a second codec at the computing device, wherein calculating the second encoding score comprises:
calculating a second quality metric that indicates a second encoding quality of a second video portion during the second execution;
calculating a second computing resource usage metric that indicates a second quantity of processor cycles used to encode the second video portion during the second execution; and
combining the second quality metric and the second computing resource usage metric as the second encoding score;
selecting the first codec instead of the second codec based at least in part on the first encoding score and the second encoding score;
generating first encoded video data with the first codec at the computing device;
transmitting the first encoded video data to a recipient device;
monitoring encoding performance of the first codec at the computing device, wherein monitoring the encoding performance comprises:
determining that a quantity of frames encoded over a period of time fails to satisfy a first threshold;
selecting a third codec associated with a lower expected usage of a computing resource;
generating second encoded video data with the third codec at the computing device; and
transmitting the second encoded video data to the recipient device.