IP Library Granted Patent US 12,739,461
Granted Patent B1
US 12,739,461 · App. 18/965,485 · Granted Sep 15, 2026

Techniques for estimating video complexity

Inventors: Qi Keith Wang (Cambridge, GB); Stephen John Bannister (Burwell, GB)
Assignee: Amazon Technologies, Inc.
H04N21/2662G06T7/20H04N19/172
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 12,739,461
App. No.
18/965,485
Granted
Sep 15, 2026
Kind
B1
Abstract

Video scene complexity can be estimated at a camera in real time. The camera may store associations between video complexity score ranges and corresponding bitrate values and between maximum key frame sizes and corresponding compression parameter values. As video is captured, a compression parameter value, a size of a compressed key frame, and a maximum key frame size associated with the compression parameter value can be used to estimate spatial complexity (e.g., a degree of detail within the video). The number of predicted frames corresponding to the key frame can be used to estimate temporal complexity (e.g., an amount of motion within the video). A video complexity score can be calculated from these spatial and temporal complexity estimations and used to select a bitrate for subsequent video transmissions, enabling improved bandwidth usage and storage planning while maintaining video quality.

Claims (60)

1 . A computer-implemented method, comprising:

obtaining, by a processor of a video capture device, a first mapping that maps a plurality of video complexity score ranges to corresponding bitrates;

obtaining, by the processor, a second mapping that maps a plurality of compression parameter values to a corresponding plurality of maximum frame sizes;

obtaining, by the processor, a group of video frames of a video;

identifying, by the processor, a key frame of the group of video frames, one or more predicted frames of the group of video frames, and a total number of frames in the group of video frames;

determining, by the processor, a key frame size and a compression parameter value used by the video capture device for compression;

calculating a video complexity score for the group of video frames, the video complexity score being calculated based at least in part on a spatial complexity score that indicates a degree of detail depicted within the key frame and a temporal complexity score that indicates an amount of motion depicted with the group of video frames, the temporal complexity score being calculated based at least in part on a quantity of the one or more predicted frames and the total number of video frames in the group of video frames; and

assigning, by the processor, a bitrate to be used by the processor for transmitting subsequent video, the bitrate being determined based at least in part on the first mapping and the video complexity score for the group of video frames.

2 . The computer-implemented method of claim 1 , wherein the compression parameter value is obtained from a video encoder of the video capture device.

3 . The computer-implemented method of claim 1 , wherein the second mapping is generated based at least in part on:

obtaining a plurality of key frames having varying degrees of spatial complexity;

generating, from the plurality of key frames, a plurality of compressed key frames based at least in part on respective compression parameter values;

identifying a plurality of key frame sizes corresponding to the plurality of compressed key frames;

identifying a largest key frame size of the plurality of key frame sizes; and

storing, within the second mapping, an association between the largest key frame size and the compression parameter value.

4 . The computer-implemented method of claim 1 , further comprising:

calculating video complexity scores corresponding to different groups of video frames;

determining the video complexity score ranges based at least in part on a distribution of the video complexity scores corresponding to different groups of video frames;

storing the video complexity score ranges in the first mapping; and

assigning a corresponding bitrate to each of the video complexity score ranges within the first mapping.

5 . The computer-implemented method of claim 1 , wherein

assigning the bitrate to be used by the processor for transmitting subsequent video causes the processor to stream the subsequent video at a rate corresponding to the bitrate assigned.

6 . A computing device, comprising:

one or more processors; and

one or more memories storing computer-executable instructions that, when executed by the one or more processors, cause the one or more processors to:

obtain a group of video frames of a video captured by a camera;

calculate a video complexity score based at least in part on the group of video frames, the video complexity score being calculated based at least in part on a spatial complexity score corresponding to a key frame of the group of video frames and a temporal complexity score corresponding to predicted frames of the group of video frames, the temporal complexity score being calculated based at least in part on a quantity of predicted frames of the group of video frames and a total number of video frames in the group of video frames;

obtain a mapping that maps a plurality of video complexity scores to corresponding bitrate values; and

adjust a streaming bitrate used by the camera to stream video data to a bitrate value that is identified from the mapping, the bitrate value being identified based at least in part on the video complexity score for the group of video frames.

7 . The computing device of claim 6 , wherein executing the computer-executable instructions that causes the one or more processors to calculate the video complexity score and adjust the streaming bitrate of the camera is performed in real time.

8 . The computing device of claim 6 , wherein executing the computer-executable instructions that causes the one or more processors to calculate the spatial complexity score corresponding to the key frame of the group of video frames, further causes the one or more processors to:

identify a quantization parameter value used to compress the key frame and a size of the key frame as compressed; and

determine, from a second mapping, a maximum key frame size that is associated with the quantization parameter value, wherein the spatial complexity score corresponding to the key frame is calculated based at least in part on the size of the key frame as compressed, the quantization parameter value, and the maximum key frame size that is associated with the quantization parameter value.

9 . The computing device of claim 8 , wherein the second mapping has been previously generated by a separate computing device different from the computing device and stored in the one or more memories of the computing device prior to capture of the group of video frames.

10 . The computing device of claim 6 , wherein the mapping associates a highest bitrate value to a highest video complexity score range and a lowest bitrate value to a lowest video complexity score range.

11 . The computing device of claim 6 , wherein the video complexity score is calculated further based at least in part on a second spatial complexity score corresponding to a second key frame of a second group of video frames and a second temporal complexity score corresponding to second predicted frames of the second group of video frames.

12 . A computer-readable storage medium comprising computer-executable instructions that, when executed by one or more processors of a computing device, cause the one or more processors to:

obtain a group of video frames of a video captured by a camera;

calculate a spatial complexity score corresponding to a key frame of the group of video frames;

calculate a temporal complexity score based at least in part on a quantity of predicted frames in a set of predicted frames of the group of video frames and a total number of video frames in the group of video frames;

identify, from a mapping, a bitrate value based at least in part on the spatial complexity score and the temporal complexity score; and

stream subsequent video data captured by the camera at a transmission rate corresponding to the bitrate value.

13 . The computer-readable storage medium of claim 12 , wherein executing the computer-executable instructions that causes the one or more processors to identify the bitrate value, further causes the one or more processors to:

calculate a video complexity score for the group of video frames based at least in part on the spatial complexity score and the temporal complexity score, wherein identifying the bitrate value is identified from the mapping based at least in part on the video complexity score for the group of video frames.

14 . The computer-readable storage medium of claim 12 , wherein

the spatial complexity score is calculated based at least in part on a maximum key frame size corresponding to a quantization parameter value used to encode the key frame.

15 . The computer-readable storage medium of claim 14 , wherein the maximum key frame size for the quantization parameter value is determined based at least in part on a plurality of key frame sizes corresponding to a plurality of key frames captured by a plurality of cameras.

16 . The computer-readable storage medium of claim 12 , wherein executing the computer-executable instructions further causes the one or more processors to:

obtain a second group of video frames subsequently captured by the camera;

calculate a second spatial complexity score corresponding to a second key frame of the second group of video frames;

calculate a second temporal complexity score based at least in part on a second set of predicted frames of the second group of video frames;

identify, from the mapping, a second bitrate value based at least in part on the second spatial complexity score and the second temporal complexity score; and

adjust the transmission rate of the camera to a value corresponding to the second bitrate value.

17 . The computer-readable storage medium of claim 12 , wherein executing the computer-executable instructions further causes the one or more processors to:

prior to identifying the bitrate value,

obtain a second group of video frames subsequently captured by the camera;

calculate a second spatial complexity score corresponding to a second key frame of the second group of video frames;

calculate a second temporal complexity score based at least in part on a second set of predicted frames of the second group of video frames;

wherein the bitrate value is identified further based at least in part on the second spatial complexity score and the second temporal complexity score.

18 . The computer-readable storage medium of claim 16 , wherein the spatial complexity score is a first spatial complexity score, wherein the first spatial complexity score is calculated based at least in part on a first quantization parameter value utilized by the camera for encoding during a first time period, wherein the second spatial complexity score is calculated based at least in part on a second quantization parameter value utilized by the camera for encoding during a second time period, wherein the first spatial complexity score and the second spatial complexity score indicate a common degree of spatial complexity, and wherein the first quantization parameter value differs from the second quantization parameter value.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 2, 2024
From: WANG, QI KEITH; BANNISTER, STEPHEN JOHN
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 069453/0770 →
References Cited (64)
US 6002394A · Schein · 1999 [cited by examiner]
US 6177931B1 · Alexander · 2001 [cited by examiner]
US 7992161B2 · Meadows · 2011 [cited by examiner]
US 8713603B2 · Kilar · 2014 [cited by examiner]
US 9100683B2 · Bhogal · 2015 [cited by examiner]
US 10070193B2 · Newman · 2018 [cited by examiner]
US 10341670B1 · Brailovskiy · 2019 [cited by examiner]
US 10701452B2 · Newman · 2020 [cited by examiner]
US 10887642B1 · Shams · 2021 [cited by examiner]
US 10958947B1 · Wei · 2021 [cited by examiner]
US 11019349B2 · Liu · 2021 [cited by examiner]
US 11394620B1 · Brailovskiy · 2022 [cited by examiner]
US 11843784B2 · Tanner · 2023 [cited by examiner]
US 12088821B1 · Waggoner · 2024 [cited by examiner]
US 20020174430A1 · Ellis · 2002 [cited by examiner]
US 20030120541A1 · Siann · 2003 [cited by examiner]
US 20030149618A1 · Sender · 2003 [cited by examiner]
US 20030149975A1 · Eldering · 2003 [cited by examiner]
US 20040255322A1 · Meadows · 2004 [cited by examiner]
US 20050132398A1 · Baran · 2005 [cited by examiner]
US 20060048184A1 · Poslinski · 2006 [cited by examiner]
US 20060253417A1 · Brownrigg · 2006 [cited by examiner]
US 20070104456A1 · Craner · 2007 [cited by examiner]
US 20070157237A1 · Cordray · 2007 [cited by examiner]
US 20070174336A1 · Day · 2007 [cited by examiner]
US 20080022298A1 · Cavicchia · 2008 [cited by examiner]
US 20080115161A1 · Kurzion · 2008 [cited by examiner]
US 20080187279A1 · Gilley · 2008 [cited by examiner]
US 20080221986A1 · Soicher · 2008 [cited by examiner]
US 20080235587A1 · Heie · 2008 [cited by examiner]
US 20080235733A1 · Heie · 2008 [cited by examiner]
US 20080271078A1 · Gossweiler · 2008 [cited by examiner]
US 20090217316A1 · Gupta · 2009 [cited by examiner]
US 20090304361A1 · Chan · 2009 [cited by examiner]
US 20090310937A1 · Ellis · 2009 [cited by examiner]
US 20100031162A1 · Wiser · 2010 [cited by examiner]
US 20100186025A1 · Thomas · 2010 [cited by examiner]
US 20100247067A1 · Gratton · 2010 [cited by examiner]
US 20110047569A1 · Mears · 2011 [cited by examiner]
US 20110138053A1 · Khan · 2011 [cited by examiner]
US 20110179453A1 · Poniatowski · 2011 [cited by examiner]
US 20110307929A1 · Youssefmir · 2011 [cited by examiner]
US 20120066371A1 · Patel · 2012 [cited by examiner]
US 20120110620A1 · Kilar · 2012 [cited by examiner]
US 20120117103A1 · Farrelly · 2012 [cited by examiner]
US 20120117339A1 · Kandekar · 2012 [cited by examiner]
US 20120284745A1 · Strong · 2012 [cited by examiner]
US 20130133009A1 · Bhogal · 2013 [cited by examiner]
US 20130139196A1 · Sokolov · 2013 [cited by examiner]
US 20130219435A1 · Pattison · 2013 [cited by examiner]
US 20160234078A1 · Jana · 2016 [cited by examiner]
US 20160301964A1 · Laliberte · 2016 [cited by examiner]
US 20160323643A1 · Panchaksharaiah · 2016 [cited by examiner]
US 20180176622A1 · Sheppard · 2018 [cited by examiner]
US 20180213243A1 · Liu · 2018 [cited by examiner]
US 20190246138A1 · Terterov · 2019 [cited by examiner]
US 20190313161A1 · Wilms · 2019 [cited by examiner]
US 20210093960A1 · Cerny · 2021 [cited by examiner]
US 20210366158A1 · Sugio · 2021 [cited by examiner]
US 20210409724A1 · Huang · 2021 [cited by examiner]
US 20220060716A1 · Han · 2022 [cited by examiner]
US 20220377359A1 · Zhou · 2022 [cited by examiner]
US 20230088688A1 · Grois · 2023 [cited by examiner]
US 20230396787A1 · Jiang · 2023 [cited by examiner]