summaryrefslogtreecommitdiff
path: root/libavcodec/h264_levels.c
diff options
context:
space:
mode:
authorDecai Lin <decai.lin@intel.com>2019-03-20 17:14:47 +0800
committerMark Thompson <sw@jkqxz.net>2019-03-27 00:13:27 +0000
commitec1e4a8baf1bfdb693555ffea7c280e1cf842dfc (patch)
tree6b77b46f90a2a4dbd96492b0501a9f54a84b5758 /libavcodec/h264_levels.c
parent1e34014010dba9325fc5430934b51a61a5007c63 (diff)
downloadffmpeg-ec1e4a8baf1bfdb693555ffea7c280e1cf842dfc.tar.gz
lavc/h264_levels: add MaxMBPS checking and update fate test.
1. add MaxMBPS checking for level idc setting to align with AVC spec AnnexA table A-1/A-6 level limits. 2. update h264 level fate test. Signed-off-by: Decai Lin <decai.lin@intel.com> Signed-off-by: Mark Thompson <sw@jkqxz.net>
Diffstat (limited to 'libavcodec/h264_levels.c')
-rw-r--r--libavcodec/h264_levels.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/libavcodec/h264_levels.c b/libavcodec/h264_levels.c
index 7a55116773..dd517f1005 100644
--- a/libavcodec/h264_levels.c
+++ b/libavcodec/h264_levels.c
@@ -89,6 +89,7 @@ const H264LevelDescriptor *ff_h264_get_level(int level_idc,
const H264LevelDescriptor *ff_h264_guess_level(int profile_idc,
int64_t bitrate,
+ int framerate,
int width, int height,
int max_dec_frame_buffering)
{
@@ -120,6 +121,9 @@ const H264LevelDescriptor *ff_h264_guess_level(int profile_idc,
FFMIN(level->max_dpb_mbs / (width_mbs * height_mbs), 16);
if (max_dec_frame_buffering > max_dpb_frames)
continue;
+
+ if (framerate > (level->max_mbps / (width_mbs * height_mbs)))
+ continue;
}
return level;