Cover directional profiles and normative DPB limits in video tests

This commit is contained in:
evgeny committed 2026-10-14 23:09:30 +02:00
1 parent c7184b55d8
commit 3063270a67
2 files changed
+27 -24

No files matched your search

@@ -35,7 +35,7 @@ struct Decoder {
class CallVideoEncoderTest : public QObject {
Q_OBJECT
call_video_format configuration(int codec) {
return {17, 640, 360, 30, 0, (uint8_t)codec, (uint8_t)(codec == 1 ? 31 : 93), 4000000, 1000000};
return {17, 640, 360, 30, 0, (uint8_t)codec, (uint8_t)(codec == 1 ? 31 : 93), 4000000, (uint8_t)(codec == 1 ? 2 : 1)};
}
private slots:
void initTestCase() {
@@ -51,7 +51,7 @@ private slots:
if (!avcodec_find_encoder_by_name(codec == 1 ? "libx264" : "libx265")) QSKIP("Software encoder unavailable");
call_video_caps sender{}, receiver{};
sender.encode[codec - 1] = receiver.decode[codec - 1]
= {1280, 720, 30, 1280 * 720 * 30, 4000000, 1000000, config.level};
= {1280, 720, 30, 1280 * 720 * 30, 4000000, config.profile, config.level};
config.level = 0; QCOMPARE(call_video_choose(&sender, &receiver, &config), codec);
QVERIFY(call_video_format_supported(&sender, &receiver, &config));
CallVideoEncoder encoder; QVERIFY2(encoder.open(config, 4000000), qPrintable(encoder.error()));
@@ -112,7 +112,7 @@ private slots:
QVERIFY(!encoder.requestBitrate(9, 1, 700001)); QVERIFY(!encoder.requestBitrate(9, 1, 299999));
auto bad = config; bad.generation = 10; QVERIFY(!encoder.open(bad, 500000, "unavailable"));
bad.width = 1920; bad.height = 1080; QVERIFY(!encoder.open(bad, 500000)); // Level 3.1 не допускает этот размер.
bad = config; bad.vbv_bits = 14000001; QVERIFY(!encoder.open(bad, 500000)); // CPB level 3.1.
bad = config; bad.profile = 4; QVERIFY(!encoder.open(bad, 500000));
QVERIFY(encoder.requestBitrate(9, 1, 500000)); // Неизменный target подтверждается на KEY.
QVERIFY(encoder.encode(image, 133333, false, output, completion)); QVERIFY(!completion.request && !output.key);
QVERIFY(encoder.encode(image, 166666, true, output, completion));