]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/h264_levels.c
lavc/movtextdec: only write fontsize, fontID tags if not default
[ffmpeg] / libavcodec / h264_levels.c
index 6b4e18a914083d47d1bc8015412aac27ec00e04e..dd517f1005fee4d07176ced92f713ec5efd750fe 100644 (file)
@@ -25,7 +25,7 @@ static const H264LevelDescriptor h264_levels[] = {
     //  | level_idc     |       MaxFS            |    MaxCPB        | MaxMvsPer2Mb
     //  |     | cs3f    |         |  MaxDpbMbs   |       |  MaxVmvR |   |
     { "1",   10, 0,     1485,     99,    396,     64,    175,   64, 2,  0 },
-    { "1b",  10, 1,     1485,     99,    396,    128,    350,   64, 2,  0 },
+    { "1b",  11, 1,     1485,     99,    396,    128,    350,   64, 2,  0 },
     { "1b",   9, 0,     1485,     99,    396,    128,    350,   64, 2,  0 },
     { "1.1", 11, 0,     3000,    396,    900,    192,    500,  128, 2,  0 },
     { "1.2", 12, 0,     6000,    396,   2376,    384,   1000,  128, 2,  0 },
@@ -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)
 {
@@ -105,7 +106,7 @@ const H264LevelDescriptor *ff_h264_guess_level(int profile_idc,
         if (level->constraint_set3_flag && no_cs3f)
             continue;
 
-        if (bitrate > level->max_br * h264_get_br_factor(profile_idc))
+        if (bitrate > (int64_t)level->max_br * h264_get_br_factor(profile_idc))
             continue;
 
         if (width_mbs  * height_mbs > level->max_fs)
@@ -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;