Verify Android hardware bitstreams through the production Qt decoder
This commit is contained in:
1 parent
5d115c3dac
commit
61bcf28720
1 file changed
+19
@@ -3,6 +3,7 @@
|
||||
#include <QtTest>
|
||||
#include "../src/call_video_encoder.h"
|
||||
#include "../src/call_video_decoder.h"
|
||||
#include "../../../src/call/call_video_bitstream.h"
|
||||
extern "C" {
|
||||
#include "debug_config.h"
|
||||
#include "stream/stream_media.h"
|
||||
@@ -49,6 +50,24 @@ private slots:
|
||||
auto caps = CallVideoDecoder::capabilities();
|
||||
QCOMPARE(caps.decode[0].profiles, uint8_t(3)); QCOMPARE(caps.decode[1].profiles, uint8_t(1));
|
||||
QCOMPARE(caps.encode[0].width, uint16_t(0)); QCOMPARE(caps.encode[1].width, uint16_t(0));
|
||||
const QString directory = qEnvironmentVariable("UTUN_CALL_VIDEO_REMOTE_DIR");
|
||||
if (!directory.isEmpty()) {
|
||||
auto files = QDir(directory).entryList({"*-codec*.idr"}, QDir::Files); QVERIFY(!files.isEmpty());
|
||||
for (const auto& name : files) {
|
||||
QFile file(QDir(directory).filePath(name)); QVERIFY(file.open(QIODevice::ReadOnly)); auto bytes = file.readAll();
|
||||
int codec = name.endsWith("-codec1.idr") ? 1 : 2;
|
||||
call_video_bitstream actual{};
|
||||
QVERIFY(!call_video_inspect_key(codec, reinterpret_cast<const uint8_t*>(bytes.constData()), bytes.size(), &actual));
|
||||
call_video_frame f{}; f.call_id = 1; f.flags = CALL_VIDEO_KEY; f.size = f.length = bytes.size();
|
||||
f.data = reinterpret_cast<const uint8_t*>(bytes.constData());
|
||||
f.format = {1, (uint16_t)actual.width, (uint16_t)actual.height, 30, 0, (uint8_t)codec,
|
||||
(uint8_t)actual.level, 4000000, (uint8_t)actual.profile};
|
||||
CallVideoDecoder decoder;
|
||||
for (unsigned i = 0; i < 4; ++i) { f.frame_id = i + 1; f.pts_us = 1000000 + i * 33333;
|
||||
QImage image; QVERIFY2(decoder.decode(f, image), qPrintable(name)); }
|
||||
DEBUG_INFO(DEBUG_CATEGORY_CALL, "hardware stream decoded file=%s", qPrintable(name));
|
||||
}
|
||||
}
|
||||
}
|
||||
void switchesAtScheduledIdr() {
|
||||
QFETCH(int, codec);
|
||||
|
||||
Reference in new issue
Block a user