1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "tst_gstreamer_backend.h"
#include <QtTest/QtTest>
#include <QtQGstreamerMediaPlugin/private/qgstreamermetadata_p.h>
#include <QtQGstreamerMediaPlugin/private/qgst_handle_types_p.h>
QT_USE_NAMESPACE
using namespace Qt::Literals;
QGstTagListHandle tst_GStreamer::parseTagList(const char *str)
{
QGstTagListHandle tagList{
gst_tag_list_new_from_string(str),
QGstTagListHandle::NeedsRef,
};
return tagList;
}
QGstTagListHandle tst_GStreamer::parseTagList(const QByteArray &ba)
{
return parseTagList(ba.constData());
}
void tst_GStreamer::metadata_taglistToMetaData()
{
QGstTagListHandle tagList = parseTagList(R"(taglist, title="My Video", comment="yada")");
QMediaMetaData parsed = taglistToMetaData(tagList);
QCOMPARE(parsed.stringValue(QMediaMetaData::Title), u"My Video"_s);
QCOMPARE(parsed.stringValue(QMediaMetaData::Comment), u"yada"_s);
}
void tst_GStreamer::metadata_taglistToMetaData_extractsOrientation()
{
QFETCH(QByteArray, taglist);
QFETCH(QtVideo::Rotation, rotation);
QGstTagListHandle tagList = parseTagList(taglist);
QMediaMetaData parsed = taglistToMetaData(tagList);
QCOMPARE(parsed[QMediaMetaData::Orientation].value<QtVideo::Rotation>(), rotation);
}
void tst_GStreamer::metadata_taglistToMetaData_extractsOrientation_data()
{
QTest::addColumn<QByteArray>("taglist");
QTest::addColumn<QtVideo::Rotation>("rotation");
QTest::newRow("no rotation") << R"(taglist, title="My Video", comment="yada")"_ba
<< QtVideo::Rotation::None;
QTest::newRow("90 degree")
<< R"(taglist, title="My Video", comment="yada", image-orientation=(string)rotate-90)"_ba
<< QtVideo::Rotation::Clockwise90;
QTest::newRow("180 degree")
<< R"(taglist, title="My Video", comment="yada", image-orientation=(string)rotate-180)"_ba
<< QtVideo::Rotation::Clockwise180;
QTest::newRow("270 degree")
<< R"(taglist, title="My Video", comment="yada", image-orientation=(string)rotate-270)"_ba
<< QtVideo::Rotation::Clockwise270;
}
void tst_GStreamer::metadata_taglistToMetaData_extractsDuration()
{
QGstTagListHandle tagList = parseTagList(
R"__(taglist, video-codec=(string)"On2\ VP9", container-specific-track-id=(string)1, extended-comment=(string){ "ALPHA_MODE\=1", "HANDLER_NAME\=Apple\ Video\ Media\ Handler", "VENDOR_ID\=appl", "TIMECODE\=00:00:00:00", "DURATION\=00:00:00.400000000" }, encoder=(string)"Lavc59.37.100\ libvpx-vp9")__");
QMediaMetaData parsed = taglistToMetaData(tagList.get());
QCOMPARE(parsed[QMediaMetaData::Duration].value<int>(), 400);
}
QTEST_GUILESS_MAIN(tst_GStreamer)
#include "moc_tst_gstreamer_backend.cpp"
|