I think I read the spec (PDF version) correct, but exactly which 240000?
The reason of using uint64 for lumaSamples is that I also changed the
resolution check so it can be bypassed by --allow-non-conformance, and the
value can potentially exceed uint32.
Original
From: chen chenm...@163.com
Sent Time: 2025-02-3- 23:47
To: Development for x265 x265-devel@videolan.org
, ccc7922 ccc7...@foxmail.com
Subject: Re:[x265] [PATCH] Add new Levels
Thank for the patch, I have some comments
From 249a2dd99de9edfd16867430deb0670f35e74941 Mon Sep 17 00:00:00 2001
From: Mr-Z-2697 <74594146+mr-z-2...@users.noreply.github.com>
Date: Sun, 12 Jan 2025 12:35:38 +0800
Subject: [PATCH] Add new Levels
LevelSpec levels[] =
{
- { 36864, 552960, 128,
MAX_UINT, 350, MAX_UINT, 2, Level::LEVEL1,
"1", 10 },
- { 122880, 3686400, 1500,
MAX_UINT, 1500, MAX_UINT, 2, Level::LEVEL2,
"2", 20 },
- { 245760, 7372800, 3000,
MAX_UINT, 3000, MAX_UINT, 2, Level::LEVEL2_1, "2.1", 21 },
- { 552960, 16588800, 6000,
MAX_UINT, 6000, MAX_UINT, 2, Level::LEVEL3,
"3", 30 },
- { 983040, 33177600, 10000,
MAX_UINT, 10000, MAX_UINT, 2, Level::LEVEL3_1, "3.1", 31 },
- { 2228224, 66846720, 12000,
30000, 12000, 30000, 4, Level::LEVEL4,
"4", 40 },
- { 2228224, 133693440, 20000,
50000, 20000, 50000, 4, Level::LEVEL4_1, "4.1",
41 },
- { 8912896, 267386880, 25000,
100000, 25000, 100000, 6, Level::LEVEL5,
"5", 50 },
- { 8912896, 534773760, 40000,
160000, 40000, 160000, 8, Level::LEVEL5_1, "5.1",
51 },
- { 8912896, 1069547520, 60000, 240000,
60000, 240000, 8, Level::LEVEL5_2, "5.2", 52 },
- { 35651584, 1069547520, 60000, 240000,
60000, 240000, 8, Level::LEVEL6, "6",
60 },
- { 35651584, 2139095040, 120000, 480000,
120000, 480000, 8, Level::LEVEL6_1, "6.1", 61 },
- { 35651584, 4278190080U, 240000, 800000,
240000, 800000, 6, Level::LEVEL6_2, "6.2", 62 },
- { MAX_UINT, MAX_UINT, MAX_UINT, MAX_UINT, MAX_UINT, MAX_UINT, 1,
Level::LEVEL8_5, "8.5", 85 },
+ { 36864, 552960,
128, MAX_UINT, 350, MAX_UINT, 2,
Level::LEVEL1, "1", 10 },
+ { 122880, 3686400,
1500, MAX_UINT, 1500, MAX_UINT, 2,
Level::LEVEL2, "2", 20 },
+ { 245760, 7372800,
3000, MAX_UINT, 3000, MAX_UINT, 2,
Level::LEVEL2_1, "2.1", 21 },
+ { 552960, 16588800,
6000, MAX_UINT, 6000, MAX_UINT, 2,
Level::LEVEL3, "3", 30 },
+ { 983040, 33177600,
10000, MAX_UINT, 10000, MAX_UINT, 2,
Level::LEVEL3_1, "3.1", 31 },
+ { 2228224, 66846720,
12000, 30000, 12000, 30000,
4, Level::LEVEL4, "4", 40 },
+ { 2228224, 133693440,
20000, 50000, 20000, 50000,
4, Level::LEVEL4_1, "4.1", 41 },
+ { 8912896, 267386880,
25000, 100000, 25000, 100000,
6, Level::LEVEL5, "5", 50 },
+ { 8912896, 534773760,
40000, 160000, 40000, 160000,
8, Level::LEVEL5_1, "5.1", 51 },
+ { 8912896, 1069547520,
60000, 240000, 60000, 240000,
8, Level::LEVEL5_2, "5.2", 52 },
+ { 35651584, 1069547520,
60000, 240000, 60000, 240000,
8, Level::LEVEL6, "6", 60 },
+ { 35651584, 2139095040,
120000, 480000, 120000, 480000,
8, Level::LEVEL6_1, "6.1", 61 },
+ { 35651584, 4278190080U, 240000,
800000, 240000, 800000, 6, Level::LEVEL6_2,
"6.2", 62 },
+ { 80216064, 4812963840ULL, 320000,
1600000, 240000, 1600000, 6, Level::LEVEL6_3, "6.3", 63
},
+ { 142606336, 4812963840ULL, 320000,
1600000, 240000, 1600000, 6, Level::LEVEL7,
"7", 70 },
mismatch to HEVC spec, 240000?
static inline int _confirm(x265_param* param, bool bflag, const char*
message)
@@ -152,8 +156,8 @@ void determineLevel(const x265_param &param, VPS&
vps)
vps.ptl.profileCompatibilityFlag[Profile::MAINSCC] = true;
#endif
- uint32_t lumaSamples = param.sourceWidth * param.sourceHeight;
- uint32_t samplesPerSec = (uint32_t)(lumaSamples *
((double)param.fpsNum / param.fpsDenom));
+ uint64_t lumaSamples = param.sourceWidth * param.sourceHeight;
Maximum picture size is 142,606,336, it is in 32-bits range
_______________________________________________
x265-devel mailing list
x265-devel@videolan.org
https://mailman.videolan.org/listinfo/x265-devel