]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/h264_levels.c
avcodec: Remove redundant freeing of extradata of encoders
[ffmpeg] / libavcodec / h264_levels.c
index 737b7dcf06c4342ef887375e3a47d8b5377e7e0e..801b27fdd92551027c5fd167212fdd297d8d0365 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 },
@@ -75,20 +75,9 @@ static int h264_get_br_factor(int profile_idc)
     return 1200;
 }
 
-const H264LevelDescriptor *ff_h264_get_level(int level_idc,
-                                             int constraint_set3_flag)
-{
-    int i;
-    for (i = 0; i < FF_ARRAY_ELEMS(h264_levels); i++) {
-        if (h264_levels[i].level_idc            == level_idc &&
-            h264_levels[i].constraint_set3_flag == constraint_set3_flag)
-            return &h264_levels[i];
-    }
-    return NULL;
-}
-
 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 +109,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;