From a5320984a748bafc03516dbf9d09dad4ede6a4a2 Mon Sep 17 00:00:00 2001 From: Gregor Jasny Date: Thu, 29 Sep 2022 05:15:59 +0200 Subject: [PATCH] Add additional H.264 levels (#3053) --- pjmedia/src/pjmedia/vid_codec_util.c | 38 ++++++++++++++++------------ 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/pjmedia/src/pjmedia/vid_codec_util.c b/pjmedia/src/pjmedia/vid_codec_util.c index 4f513679e..1a6c4f710 100644 --- a/pjmedia/src/pjmedia/vid_codec_util.c +++ b/pjmedia/src/pjmedia/vid_codec_util.c @@ -317,24 +317,30 @@ typedef struct h264_level_info_t static pj_status_t init_h264_profile(const pj_str_t *profile, pjmedia_vid_codec_h264_fmtp *fmtp) { + // Taken from https://www.itu.int/rec/T-REC-H.264 + // H.264 (08/21) Table A-1 – Level limits const h264_level_info_t level_info[] = { - { 10, 1485, 99, 64 }, - { 9, 1485, 99, 128 }, /*< level 1b */ - { 11, 3000, 396, 192 }, - { 12, 6000, 396, 384 }, - { 13, 11880, 396, 768 }, - { 20, 11880, 396, 2000 }, - { 21, 19800, 792, 4000 }, - { 22, 20250, 1620, 4000 }, - { 30, 40500, 1620, 10000 }, - { 31, 108000, 3600, 14000 }, - { 32, 216000, 5120, 20000 }, - { 40, 245760, 8192, 20000 }, - { 41, 245760, 8192, 50000 }, - { 42, 522240, 8704, 50000 }, - { 50, 589824, 22080, 135000 }, - { 51, 983040, 36864, 240000 }, + { 10, 1485, 99, 64 }, + { 9, 1485, 99, 128 }, /*< level 1b */ + { 11, 3000, 396, 192 }, + { 12, 6000, 396, 384 }, + { 13, 11880, 396, 768 }, + { 20, 11880, 396, 2000 }, + { 21, 19800, 792, 4000 }, + { 22, 20250, 1620, 4000 }, + { 30, 40500, 1620, 10000 }, + { 31, 108000, 3600, 14000 }, + { 32, 216000, 5120, 20000 }, + { 40, 245760, 8192, 20000 }, + { 41, 245760, 8192, 50000 }, + { 42, 522240, 8704, 50000 }, + { 50, 589824, 22080, 135000 }, + { 51, 983040, 36864, 240000 }, + { 52, 2073600, 36864, 240000 }, + { 60, 4177920, 139264, 240000 }, + { 61, 8355840, 139264, 480000 }, + { 62, 16711680, 139264, 800000 }, }; unsigned i, tmp; pj_str_t endst;