Expand Up
@@ -1557,20 +1557,84 @@ void TestMPEGTables::scte35_sit_test1(void)
//
// DVB NetworkInformationTable Tests
//
const std::vector<uint8_t > au_nit_data {
0x40 , 0xF0 , 0x67 , 0x32 , 0xA0 , 0xE1 , 0x00 , 0x00 , 0xF0 , 0x05 , 0x40 , 0x03 , 0x53 , 0x43 , 0x41 , 0xF0 ,
0x55 , 0x08 , 0x07 , 0x32 , 0x0C , 0xF0 , 0x4F , 0x5A , 0x0B , 0x01 , 0x0E , 0xD7 , 0xF0 , 0x3B , 0x82 , 0x4A ,
0xFF , 0xFF , 0xFF , 0xFF , 0x41 , 0x18 , 0x08 , 0x07 , 0x01 , 0x08 , 0x27 , 0x01 , 0x08 , 0x47 , 0x01 , 0x08 ,
0x67 , 0x16 , 0x08 , 0x87 , 0x16 , 0x08 , 0xA7 , 0x01 , 0x08 , 0xC7 , 0x19 , 0x08 , 0xE7 , 0x16 , 0x5F , 0x04 ,
0x00 , 0x00 , 0x32 , 0x00 , 0x83 , 0x20 , 0x08 , 0x07 , 0xFC , 0x05 , 0x08 , 0xC7 , 0xFC , 0x32 , 0x08 , 0xA7 ,
0xFC , 0x33 , 0x08 , 0x27 , 0xFC , 0x34 , 0x08 , 0x47 , 0xFC , 0x35 , 0x08 , 0xE7 , 0xFC , 0x36 , 0x08 , 0x67 ,
0xFC , 0x37 , 0x08 , 0x87 , 0xFC , 0x38 , 0x7B , 0xC3 , 0xA9 , 0xED ,
};
void TestMPEGTables::dvb_nit_test (void )
{
const std::vector<uint8_t > si_data {
0x40 , 0xF0 , 0x67 , 0x32 , 0xA0 , 0xE1 , 0x00 , 0x00 , 0xF0 , 0x05 , 0x40 , 0x03 , 0x53 , 0x43 , 0x41 , 0xF0 ,
0x55 , 0x08 , 0x07 , 0x32 , 0x0C , 0xF0 , 0x4F , 0x5A , 0x0B , 0x01 , 0x0E , 0xD7 , 0xF0 , 0x3B , 0x82 , 0x4A ,
0xFF , 0xFF , 0xFF , 0xFF , 0x41 , 0x18 , 0x08 , 0x07 , 0x01 , 0x08 , 0x27 , 0x01 , 0x08 , 0x47 , 0x01 , 0x08 ,
0x67 , 0x16 , 0x08 , 0x87 , 0x16 , 0x08 , 0xA7 , 0x01 , 0x08 , 0xC7 , 0x19 , 0x08 , 0xE7 , 0x16 , 0x5F , 0x04 ,
0x00 , 0x00 , 0x32 , 0x00 , 0x83 , 0x20 , 0x08 , 0x07 , 0xFC , 0x05 , 0x08 , 0xC7 , 0xFC , 0x32 , 0x08 , 0xA7 ,
0xFC , 0x33 , 0x08 , 0x27 , 0xFC , 0x34 , 0x08 , 0x47 , 0xFC , 0x35 , 0x08 , 0xE7 , 0xFC , 0x36 , 0x08 , 0x67 ,
0xFC , 0x37 , 0x08 , 0x87 , 0xFC , 0x38 , 0x7B , 0xC3 , 0xA9 , 0xED ,
};
const std::vector<uint8_t > nz_nit_data {
0x40 , 0xF3 , 0xDB , 0x34 , 0x01 , 0xF1 , 0x00 , 0x01 , 0xF0 , 0x0B , 0x40 , 0x09 , 0x46 , 0x72 , 0x65 , 0x65 ,
0x76 , 0x69 , 0x65 , 0x77 , 0x20 , 0xF3 , 0xC3 , 0x00 , 0x19 , 0x22 , 0x2A , 0xF0 , 0x8A , 0x5A , 0x0B , 0x00 ,
0x00 , 0x00 , 0x00 , 0x1F , 0x82 , 0x0B , 0xFF , 0xFF , 0xFF , 0xFF , 0x41 , 0x21 , 0x04 , 0xB0 , 0x19 , 0x04 ,
0xB1 , 0x19 , 0x04 , 0xB5 , 0x19 , 0x04 , 0xB6 , 0x16 , 0x04 , 0xB7 , 0x16 , 0x04 , 0xB8 , 0x16 , 0x30 , 0xD4 ,
0x0C , 0x30 , 0xD5 , 0x19 , 0x30 , 0xD6 , 0x19 , 0x30 , 0xD7 , 0x19 , 0x30 , 0xD8 , 0x19 , 0x62 , 0x0D , 0xFF ,
0x03 , 0x34 , 0xEC , 0x40 , 0x03 , 0x28 , 0xB7 , 0x40 , 0x03 , 0x71 , 0xF5 , 0x40 , 0x5F , 0x04 , 0x00 , 0x00 ,
0x00 , 0x37 , 0x83 , 0x2C , 0x04 , 0xB0 , 0xFC , 0x01 , 0x04 , 0xB1 , 0xFC , 0x02 , 0x04 , 0xB5 , 0xFC , 0x06 ,
0x04 , 0xB6 , 0xFC , 0x0B , 0x04 , 0xB7 , 0xFC , 0x07 , 0x04 , 0xB8 , 0xFC , 0x0C , 0x30 , 0xD4 , 0x7D , 0xF4 ,
0x30 , 0xD5 , 0x7E , 0x58 , 0x30 , 0xD6 , 0x7E , 0x59 , 0x30 , 0xD7 , 0x7E , 0x5A , 0x30 , 0xD8 , 0x7E , 0x5B ,
0x6D , 0x15 , 0x27 , 0x74 , 0x03 , 0x34 , 0xEC , 0x40 , 0x00 , 0x27 , 0x75 , 0x03 , 0x28 , 0xB7 , 0x40 , 0x00 ,
0x27 , 0xA6 , 0x03 , 0x71 , 0xF5 , 0x40 , 0x00 , 0x00 , 0x1A , 0x22 , 0x2A , 0xF0 , 0x7F , 0x5A , 0x0B , 0x00 ,
0x00 , 0x00 , 0x00 , 0x1F , 0x82 , 0x0B , 0xFF , 0xFF , 0xFF , 0xFF , 0x41 , 0x18 , 0x04 , 0xB0 , 0x19 , 0x04 ,
0xB1 , 0x19 , 0x04 , 0xB5 , 0x19 , 0x04 , 0xB6 , 0x16 , 0x04 , 0xB7 , 0x16 , 0x04 , 0xB8 , 0x16 , 0x30 , 0xD4 ,
0x0C , 0x30 , 0xD5 , 0x19 , 0x62 , 0x09 , 0xFF , 0x03 , 0x71 , 0xF5 , 0x40 , 0x03 , 0x7E , 0x2A , 0x40 , 0x5F ,
0x04 , 0x00 , 0x00 , 0x00 , 0x37 , 0x83 , 0x20 , 0x04 , 0xB0 , 0xFC , 0x01 , 0x04 , 0xB1 , 0xFC , 0x02 , 0x04 ,
0xB5 , 0xFC , 0x06 , 0x04 , 0xB6 , 0xFC , 0x0B , 0x04 , 0xB7 , 0xFC , 0x07 , 0x04 , 0xB8 , 0xFC , 0x0C , 0x30 ,
0xD4 , 0x7D , 0xF4 , 0x30 , 0xD5 , 0x7E , 0x58 , 0x6D , 0x23 , 0x27 , 0xD8 , 0x03 , 0x71 , 0xF5 , 0x40 , 0x00 ,
0x27 , 0xD9 , 0x03 , 0x7E , 0x2A , 0x40 , 0x00 , 0x27 , 0xDA , 0x03 , 0x7E , 0x2A , 0x40 , 0x00 , 0x27 , 0xEC ,
0x03 , 0x7E , 0x2A , 0x40 , 0x00 , 0x28 , 0x00 , 0x03 , 0x7E , 0x2A , 0x40 , 0x00 , 0x00 , 0x1B , 0x22 , 0x2A ,
0xF0 , 0xA2 , 0x5A , 0x0B , 0x00 , 0x00 , 0x00 , 0x00 , 0x1F , 0x82 , 0x0B , 0xFF , 0xFF , 0xFF , 0xFF , 0x41 ,
0x15 , 0x04 , 0xB0 , 0x19 , 0x04 , 0xB1 , 0x19 , 0x04 , 0xB5 , 0x19 , 0x04 , 0xB6 , 0x16 , 0x04 , 0xB7 , 0x16 ,
0x04 , 0xB8 , 0x16 , 0x30 , 0xD4 , 0x0C , 0x62 , 0x09 , 0xFF , 0x03 , 0x7E , 0x2A , 0x40 , 0x03 , 0x71 , 0xF5 ,
0x40 , 0x5F , 0x04 , 0x00 , 0x00 , 0x00 , 0x37 , 0x83 , 0x1C , 0x04 , 0xB0 , 0xFC , 0x01 , 0x04 , 0xB1 , 0xFC ,
0x02 , 0x04 , 0xB5 , 0xFC , 0x06 , 0x04 , 0xB6 , 0xFC , 0x0B , 0x04 , 0xB7 , 0xFC , 0x07 , 0x30 , 0xD4 , 0x7D ,
0xF4 , 0x04 , 0xB8 , 0xFC , 0x0C , 0x6D , 0x4D , 0x28 , 0x3C , 0x03 , 0x7E , 0x2A , 0x40 , 0x00 , 0x28 , 0x3D ,
0x03 , 0x71 , 0xF5 , 0x40 , 0x00 , 0x28 , 0x46 , 0x03 , 0x71 , 0xF5 , 0x40 , 0x00 , 0x28 , 0x47 , 0x03 , 0x7E ,
0x2A , 0x40 , 0x00 , 0x28 , 0xA0 , 0x03 , 0x71 , 0xF5 , 0x40 , 0x00 , 0x28 , 0xAA , 0x03 , 0x71 , 0xF5 , 0x40 ,
0x00 , 0x28 , 0xB4 , 0x03 , 0x7E , 0x2A , 0x40 , 0x00 , 0x28 , 0xBE , 0x03 , 0x7E , 0x2A , 0x40 , 0x00 , 0x29 ,
0x04 , 0x03 , 0x71 , 0xF5 , 0x40 , 0x00 , 0x29 , 0x05 , 0x03 , 0x7E , 0x2A , 0x40 , 0x00 , 0x29 , 0x08 , 0x03 ,
0x7E , 0x2A , 0x40 , 0x00 , 0x00 , 0x1C , 0x22 , 0x2A , 0xF0 , 0x7F , 0x5A , 0x0B , 0x00 , 0x00 , 0x00 , 0x00 ,
0x1F , 0x82 , 0x0B , 0xFF , 0xFF , 0xFF , 0xFF , 0x41 , 0x15 , 0x04 , 0xB0 , 0x19 , 0x04 , 0xB1 , 0x19 , 0x04 ,
0xB5 , 0x19 , 0x04 , 0xB6 , 0x16 , 0x04 , 0xB7 , 0x16 , 0x04 , 0xB8 , 0x16 , 0x30 , 0xD4 , 0x0C , 0x62 , 0x09 ,
0xFF , 0x03 , 0x71 , 0xF5 , 0x40 , 0x03 , 0x7E , 0x2A , 0x40 , 0x5F , 0x04 , 0x00 , 0x00 , 0x00 , 0x37 , 0x83 ,
0x1C , 0x04 , 0xB0 , 0xFC , 0x01 , 0x04 , 0xB1 , 0xFC , 0x02 , 0x04 , 0xB5 , 0xFC , 0x06 , 0x04 , 0xB6 , 0xFC ,
0x0B , 0x04 , 0xB7 , 0xFC , 0x07 , 0x04 , 0xB8 , 0xFC , 0x0C , 0x30 , 0xD4 , 0x7D , 0xF4 , 0x6D , 0x2A , 0x29 ,
0x68 , 0x03 , 0x71 , 0xF5 , 0x40 , 0x00 , 0x29 , 0x72 , 0x03 , 0x7E , 0x2A , 0x40 , 0x00 , 0x29 , 0x73 , 0x03 ,
0x71 , 0xF5 , 0x40 , 0x00 , 0x29 , 0x9A , 0x03 , 0x7E , 0x2A , 0x40 , 0x00 , 0x29 , 0xCC , 0x03 , 0x71 , 0xF5 ,
0x40 , 0x00 , 0x29 , 0xFE , 0x03 , 0x71 , 0xF5 , 0x40 , 0x00 , 0x00 , 0x1D , 0x22 , 0x2A , 0xF0 , 0x63 , 0x5A ,
0x0B , 0x00 , 0x00 , 0x00 , 0x00 , 0x1F , 0x82 , 0x0B , 0xFF , 0xFF , 0xFF , 0xFF , 0x41 , 0x12 , 0x05 , 0x14 ,
0x19 , 0x05 , 0x16 , 0x16 , 0x05 , 0x15 , 0x19 , 0x05 , 0x17 , 0x19 , 0x05 , 0x1B , 0x16 , 0x05 , 0x1C , 0x16 ,
0x62 , 0x09 , 0xFF , 0x03 , 0x65 , 0xC0 , 0x40 , 0x03 , 0x59 , 0x8B , 0x40 , 0x5F , 0x04 , 0x00 , 0x00 , 0x00 ,
0x37 , 0x83 , 0x18 , 0x05 , 0x14 , 0xFC , 0x03 , 0x05 , 0x16 , 0xFC , 0x0D , 0x05 , 0x15 , 0xFC , 0x0E , 0x05 ,
0x17 , 0xFC , 0x08 , 0x05 , 0x1B , 0xFC , 0x04 , 0x05 , 0x1C , 0xFC , 0x09 , 0x6D , 0x15 , 0x4E , 0x84 , 0x03 ,
0x65 , 0xC0 , 0x40 , 0x00 , 0x4E , 0x85 , 0x03 , 0x59 , 0x8B , 0x40 , 0x00 , 0x4E , 0xB6 , 0x03 , 0x59 , 0x8B ,
0x40 , 0x00 , 0x00 , 0x1E , 0x22 , 0x2A , 0xF0 , 0x71 , 0x5A , 0x0B , 0x00 , 0x00 , 0x00 , 0x00 , 0x1F , 0x82 ,
0x0B , 0xFF , 0xFF , 0xFF , 0xFF , 0x41 , 0x12 , 0x05 , 0x14 , 0x19 , 0x05 , 0x16 , 0x16 , 0x05 , 0x15 , 0x19 ,
0x05 , 0x17 , 0x19 , 0x05 , 0x1B , 0x16 , 0x05 , 0x1C , 0x16 , 0x62 , 0x09 , 0xFF , 0x03 , 0x65 , 0xC0 , 0x40 ,
0x03 , 0x59 , 0x8B , 0x40 , 0x5F , 0x04 , 0x00 , 0x00 , 0x00 , 0x37 , 0x83 , 0x18 , 0x05 , 0x14 , 0xFC , 0x03 ,
0x05 , 0x16 , 0xFC , 0x0D , 0x05 , 0x15 , 0xFC , 0x0E , 0x05 , 0x17 , 0xFC , 0x08 , 0x05 , 0x1B , 0xFC , 0x04 ,
0x05 , 0x1C , 0xFC , 0x09 , 0x6D , 0x23 , 0x4E , 0xE8 , 0x03 , 0x59 , 0x8B , 0x40 , 0x00 , 0x4E , 0xE9 , 0x03 ,
0x65 , 0xC0 , 0x40 , 0x00 , 0x4E , 0xEA , 0x03 , 0x65 , 0xC0 , 0x40 , 0x00 , 0x4E , 0xFC , 0x03 , 0x65 , 0xC0 ,
0x40 , 0x00 , 0x4F , 0x10 , 0x03 , 0x65 , 0xC0 , 0x40 , 0x00 , 0x00 , 0x1F , 0x22 , 0x2A , 0xF0 , 0x9B , 0x5A ,
0x0B , 0x00 , 0x00 , 0x00 , 0x00 , 0x1F , 0x82 , 0x0B , 0xFF , 0xFF , 0xFF , 0xFF , 0x41 , 0x12 , 0x05 , 0x14 ,
0x19 , 0x05 , 0x16 , 0x16 , 0x05 , 0x15 , 0x19 , 0x05 , 0x17 , 0x19 , 0x05 , 0x1B , 0x16 , 0x05 , 0x1C , 0x16 ,
0x62 , 0x09 , 0xFF , 0x03 , 0x65 , 0xC0 , 0x40 , 0x03 , 0x59 , 0x8B , 0x40 , 0x5F , 0x04 , 0x00 , 0x00 , 0x00 ,
0x37 , 0x83 , 0x18 , 0x05 , 0x14 , 0xFC , 0x03 , 0x05 , 0x16 , 0xFC , 0x0D , 0x05 , 0x15 , 0xFC , 0x0E , 0x05 ,
0x17 , 0xFC , 0x08 , 0x05 , 0x1B , 0xFC , 0x04 , 0x05 , 0x1C , 0xFC , 0x09 , 0x6D , 0x4D , 0x4F , 0x4C , 0x03 ,
0x65 , 0xC0 , 0x40 , 0x00 , 0x4F , 0x4D , 0x03 , 0x59 , 0x8B , 0x40 , 0x00 , 0x4F , 0x56 , 0x03 , 0x59 , 0x8B ,
0x40 , 0x00 , 0x4F , 0x57 , 0x03 , 0x65 , 0xC0 , 0x40 , 0x00 , 0x4F , 0xB0 , 0x03 , 0x59 , 0x8B , 0x40 , 0x00 ,
0x4F , 0xBA , 0x03 , 0x59 , 0x8B , 0x40 , 0x00 , 0x4F , 0xC4 , 0x03 , 0x65 , 0xC0 , 0x40 , 0x00 , 0x4F , 0xCE ,
0x03 , 0x65 , 0xC0 , 0x40 , 0x00 , 0x50 , 0x14 , 0x03 , 0x59 , 0x8B , 0x40 , 0x00 , 0x50 , 0x15 , 0x03 , 0x65 ,
0xC0 , 0x40 , 0x00 , 0x50 , 0x18 , 0x03 , 0x65 , 0xC0 , 0x40 , 0x00 , 0x09 , 0xC8 , 0x3C , 0x18 ,
};
PSIPTable si_table (si_data);
void TestMPEGTables::dvb_nit_test1 (void )
{
PSIPTable si_table (au_nit_data);
QVERIFY (si_table.IsGood ());
QVERIFY (si_table.HasCRC ());
QVERIFY (si_table.VerifyCRC ());
Expand Down
Expand Up
@@ -1601,6 +1665,70 @@ void TestMPEGTables::dvb_nit_test(void)
// No parsing of transport stream descriptors
}
void TestMPEGTables::dvb_nit_test2 (void )
{
PSIPTable si_table (nz_nit_data);
QVERIFY (si_table.IsGood ());
QVERIFY (si_table.HasCRC ());
QVERIFY (si_table.VerifyCRC ());
QCOMPARE (si_table.Length (), 987U );
// PSIP generic fields
NetworkInformationTable nit (si_table);
QCOMPARE (nit.SectionSyntaxIndicator (), true );
QCOMPARE (nit.PrivateIndicator (), true );
QCOMPARE (nit.SectionLengthRaw (), 987U );
QCOMPARE (nit.NetworkID (), 13313U );
QCOMPARE (nit.Version (), 24U );
QCOMPARE (nit.IsCurrent (), true );
QCOMPARE (nit.Section (), 0U );
QCOMPARE (nit.LastSection (), 1U );
// NIT specific fields
QCOMPARE (nit.NetworkDescriptorsLength (), 11U );
QCOMPARE (nit.NetworkName (), " Freeview " );
// NIT Transport Streams
// No parsing of transport stream descriptors
QCOMPARE (nit.TransportStreamDataLength (), 963U );
QCOMPARE (nit.TransportStreamCount (), 7U );
QCOMPARE (nit.TSID (0 ), 25U );
QCOMPARE (nit.OriginalNetworkID (0 ), 8746U );
QCOMPARE (nit.TransportDescriptorsLength (0 ), 138U );
QCOMPARE (nit.TransportDescriptors (0 ), nit.data ()+29 );
QCOMPARE (nit.TSID (1 ), 26U );
QCOMPARE (nit.OriginalNetworkID (1 ), 8746U );
QCOMPARE (nit.TransportDescriptorsLength (1 ), 127U );
QCOMPARE (nit.TransportDescriptors (1 ), nit.data ()+173 );
QCOMPARE (nit.TSID (2 ), 27U );
QCOMPARE (nit.OriginalNetworkID (2 ), 8746U );
QCOMPARE (nit.TransportDescriptorsLength (2 ), 162U );
QCOMPARE (nit.TransportDescriptors (2 ), nit.data ()+306 );
QCOMPARE (nit.TSID (3 ), 28U );
QCOMPARE (nit.OriginalNetworkID (3 ), 8746U );
QCOMPARE (nit.TransportDescriptorsLength (3 ), 127U );
QCOMPARE (nit.TransportDescriptors (3 ), nit.data ()+474 );
QCOMPARE (nit.TSID (4 ), 29U );
QCOMPARE (nit.OriginalNetworkID (4 ), 8746U );
QCOMPARE (nit.TransportDescriptorsLength (4 ), 99U );
QCOMPARE (nit.TransportDescriptors (4 ), nit.data ()+607 );
QCOMPARE (nit.TSID (5 ), 30U );
QCOMPARE (nit.OriginalNetworkID (5 ), 8746U );
QCOMPARE (nit.TransportDescriptorsLength (5 ), 113U );
QCOMPARE (nit.TransportDescriptors (5 ), nit.data ()+712 );
QCOMPARE (nit.TSID (6 ), 31U );
QCOMPARE (nit.OriginalNetworkID (6 ), 8746U );
QCOMPARE (nit.TransportDescriptorsLength (6 ), 155U );
QCOMPARE (nit.TransportDescriptors (6 ), nit.data ()+831 );
}
//
// DVB ServiceDescriptionTable Tests
//
Expand Down
Expand Up
@@ -1629,7 +1757,42 @@ const std::vector<uint8_t> au_sdt_data {
0x41 , 0x08 , 0x31 , 0x30 , 0x20 , 0x53 , 0x48 , 0x41 , 0x4B , 0x45 , 0xBF , 0x08 , 0x88 , 0xE6 ,
};
void TestMPEGTables::dvb_sdt_test (void )
const std::vector<uint8_t > nz_sdt_actual_data {
0x42 , 0xF0 , 0x98 , 0x00 , 0x23 , 0xCD , 0x00 , 0x00 , 0x22 , 0x2A , 0xFF , 0x06 , 0x40 , 0xFF , 0x80 , 0x37 ,
0x48 , 0x19 , 0x19 , 0x06 , 0x4B , 0x6F , 0x72 , 0x64 , 0x69 , 0x61 , 0x10 , 0x4D , 0x61 , 0x6F , 0x72 , 0x69 ,
0x20 , 0x54 , 0x65 , 0x6C , 0x65 , 0x76 , 0x69 , 0x73 , 0x69 , 0x6F , 0x6E , 0x73 , 0x1A , 0x63 , 0x72 , 0x69 ,
0x64 , 0x3A , 0x2F , 0x2F , 0x6D , 0x61 , 0x6F , 0x72 , 0x69 , 0x74 , 0x65 , 0x6C , 0x65 , 0x76 , 0x69 , 0x73 ,
0x69 , 0x6F , 0x6E , 0x2E , 0x63 , 0x6F , 0x6D , 0x06 , 0x41 , 0xFF , 0x80 , 0x2D , 0x48 , 0x0F , 0x19 , 0x06 ,
0x4B , 0x6F , 0x72 , 0x64 , 0x69 , 0x61 , 0x06 , 0x54 , 0x65 , 0x20 , 0x52 , 0x65 , 0x6F , 0x73 , 0x1A , 0x63 ,
0x72 , 0x69 , 0x64 , 0x3A , 0x2F , 0x2F , 0x6D , 0x61 , 0x6F , 0x72 , 0x69 , 0x74 , 0x65 , 0x6C , 0x65 , 0x76 ,
0x69 , 0x73 , 0x69 , 0x6F , 0x6E , 0x2E , 0x63 , 0x6F , 0x6D , 0x3E , 0x80 , 0xFC , 0x80 , 0x19 , 0x48 , 0x17 ,
0x16 , 0x06 , 0x4B , 0x6F , 0x72 , 0x64 , 0x69 , 0x61 , 0x0E , 0x54 , 0x65 , 0x73 , 0x74 , 0x20 , 0x53 , 0x65 ,
0x72 , 0x76 , 0x69 , 0x63 , 0x65 , 0x20 , 0x31 , 0xBF , 0x5E , 0x3C , 0x10 ,
};
const std::vector<uint8_t > nz_sdt_other_data {
0x46 , 0xF1 , 0x1E , 0x00 , 0x1B , 0xD7 , 0x00 , 0x00 , 0x22 , 0x2A , 0xFF , 0x04 , 0xB0 , 0xFD , 0x80 , 0x22 ,
0x48 , 0x0D , 0x19 , 0x04 , 0x54 , 0x56 , 0x4E , 0x5A , 0x06 , 0x54 , 0x56 , 0x4E , 0x5A , 0x20 , 0x31 , 0x73 ,
0x11 , 0x63 , 0x72 , 0x69 , 0x64 , 0x3A , 0x2F , 0x2F , 0x74 , 0x76 , 0x6E , 0x7A , 0x2E , 0x63 , 0x6F , 0x2E ,
0x6E , 0x7A , 0x04 , 0xB1 , 0xFD , 0x80 , 0x22 , 0x48 , 0x0D , 0x19 , 0x04 , 0x54 , 0x56 , 0x4E , 0x5A , 0x06 ,
0x54 , 0x56 , 0x4E , 0x5A , 0x20 , 0x32 , 0x73 , 0x11 , 0x63 , 0x72 , 0x69 , 0x64 , 0x3A , 0x2F , 0x2F , 0x74 ,
0x76 , 0x6E , 0x7A , 0x2E , 0x63 , 0x6F , 0x2E , 0x6E , 0x7A , 0x04 , 0xB5 , 0xFD , 0x80 , 0x25 , 0x48 , 0x10 ,
0x19 , 0x04 , 0x54 , 0x56 , 0x4E , 0x5A , 0x09 , 0x54 , 0x56 , 0x4E , 0x5A , 0x20 , 0x44 , 0x55 , 0x4B , 0x45 ,
0x73 , 0x11 , 0x63 , 0x72 , 0x69 , 0x64 , 0x3A , 0x2F , 0x2F , 0x74 , 0x76 , 0x6E , 0x7A , 0x2E , 0x63 , 0x6F ,
0x2E , 0x6E , 0x7A , 0x04 , 0xB6 , 0xFD , 0x80 , 0x25 , 0x48 , 0x10 , 0x16 , 0x04 , 0x54 , 0x56 , 0x4E , 0x5A ,
0x09 , 0x54 , 0x56 , 0x4E , 0x5A , 0x20 , 0x31 , 0x20 , 0x2B , 0x31 , 0x73 , 0x11 , 0x63 , 0x72 , 0x69 , 0x64 ,
0x3A , 0x2F , 0x2F , 0x74 , 0x76 , 0x6E , 0x7A , 0x2E , 0x63 , 0x6F , 0x2E , 0x6E , 0x7A , 0x04 , 0xB7 , 0xFD ,
0x80 , 0x25 , 0x48 , 0x10 , 0x16 , 0x04 , 0x54 , 0x56 , 0x4E , 0x5A , 0x09 , 0x54 , 0x56 , 0x4E , 0x5A , 0x20 ,
0x32 , 0x20 , 0x2B , 0x31 , 0x73 , 0x11 , 0x63 , 0x72 , 0x69 , 0x64 , 0x3A , 0x2F , 0x2F , 0x74 , 0x76 , 0x6E ,
0x7A , 0x2E , 0x63 , 0x6F , 0x2E , 0x6E , 0x7A , 0x04 , 0xB8 , 0xFD , 0x80 , 0x27 , 0x48 , 0x12 , 0x16 , 0x04 ,
0x54 , 0x56 , 0x4E , 0x5A , 0x0B , 0x54 , 0x56 , 0x4E , 0x5A , 0x20 , 0x44 , 0x55 , 0x4B , 0x45 , 0x2B , 0x31 ,
0x73 , 0x11 , 0x63 , 0x72 , 0x69 , 0x64 , 0x3A , 0x2F , 0x2F , 0x74 , 0x76 , 0x6E , 0x7A , 0x2E , 0x63 , 0x6F ,
0x2E , 0x6E , 0x7A , 0x30 , 0xD4 , 0xFC , 0x80 , 0x15 , 0x48 , 0x13 , 0x0C , 0x04 , 0x54 , 0x56 , 0x4E , 0x5A ,
0x0C , 0x49 , 0x4E , 0x46 , 0x4F , 0x20 , 0x43 , 0x48 , 0x41 , 0x4E , 0x4E , 0x45 , 0x4C , 0xA8 , 0x57 , 0xB0 ,
0xA2 ,
};
void TestMPEGTables::dvb_sdt_test1 (void )
{
PSIPTable si_table (au_sdt_data);
QVERIFY (si_table.IsGood ());
Expand Down
Expand Up
@@ -1681,6 +1844,7 @@ void TestMPEGTables::dvb_sdt_test(void)
QCOMPARE (sd->ServiceType (), 1U );
QCOMPARE (sd->ServiceProviderNameLength (), 3U );
QCOMPARE (sd->ServiceProviderName (), " SCA" );
QCOMPARE (sd->ServiceProviderShortName (), " SCA" );
QCOMPARE (sd->ServiceNameLength (), 8U );
QCOMPARE (sd->ServiceName (), " 10 Peach" );
}
Expand Down
Expand Up
@@ -1709,18 +1873,233 @@ void TestMPEGTables::dvb_sdt_test(void)
}
}
void TestMPEGTables::dvb_sdt_test2a (void )
{
PSIPTable si_table (nz_sdt_actual_data);
QVERIFY (si_table.IsGood ());
QVERIFY (si_table.HasCRC ());
QVERIFY (si_table.VerifyCRC ());
QCOMPARE (si_table.Length (), 152U );
// PSIP generic fields
ServiceDescriptionTable sdt (si_table);
QCOMPARE (sdt.SectionSyntaxIndicator (), true );
QCOMPARE (sdt.PrivateIndicator (), true );
QCOMPARE (sdt.SectionLengthRaw (), 152U );
QCOMPARE (sdt.TSID (), 35U );
QCOMPARE (sdt.Version (), 6U );
QCOMPARE (sdt.IsCurrent (), true );
QCOMPARE (sdt.Section (), 0U );
QCOMPARE (sdt.LastSection (), 0U );
// SDT specific fields
QCOMPARE (sdt.OriginalNetworkID (), 8746U );
QCOMPARE (sdt.ServiceCount (), 3U );
QCOMPARE (sdt.ServiceID (0 ), 1600U );
QCOMPARE (sdt.HasEITSchedule (0 ), true );
QCOMPARE (sdt.HasEITPresentFollowing (0 ), true );
QCOMPARE (sdt.RunningStatus (0 ), 4U );
QCOMPARE (sdt.IsEncrypted (0 ), false );
QCOMPARE (sdt.ServiceDescriptorsLength (0 ), 55U );
QCOMPARE (sdt.ServiceDescriptors (0 ), sdt.data ()+ 16 );
{
ServiceDescriptor *sd0 = sdt.GetServiceDescriptor (0 );
QCOMPARE (sd0->ServiceType (), 25U );
QCOMPARE (sd0->ServiceProviderNameLength (), 6U );
QCOMPARE (sd0->ServiceProviderName (), " Kordia" );
QCOMPARE (sd0->ServiceProviderShortName (), " Kordia" );
QCOMPARE (sd0->ServiceNameLength (), 16U );
QCOMPARE (sd0->ServiceName (), " Maori Television" );
}
QCOMPARE (sdt.ServiceID (1 ), 1601U );
QCOMPARE (sdt.HasEITSchedule (1 ), true );
QCOMPARE (sdt.HasEITPresentFollowing (1 ), true );
QCOMPARE (sdt.RunningStatus (1 ), 4U );
QCOMPARE (sdt.IsEncrypted (1 ), false );
QCOMPARE (sdt.ServiceDescriptorsLength (1 ), 45U );
QCOMPARE (sdt.ServiceDescriptors (1 ), sdt.data ()+ 76 );
{
ServiceDescriptor *sd1 = sdt.GetServiceDescriptor (1 );
QCOMPARE (sd1->ServiceType (), 25U );
QCOMPARE (sd1->ServiceProviderNameLength (), 6U );
QCOMPARE (sd1->ServiceProviderName (), " Kordia" );
QCOMPARE (sd1->ServiceProviderShortName (), " Kordia" );
QCOMPARE (sd1->ServiceNameLength (), 6U );
QCOMPARE (sd1->ServiceName (), " Te Reo" );
}
QCOMPARE (sdt.ServiceID (2 ), 16000U );
QCOMPARE (sdt.HasEITSchedule (2 ), false );
QCOMPARE (sdt.HasEITPresentFollowing (2 ), false );
QCOMPARE (sdt.RunningStatus (2 ), 4U );
QCOMPARE (sdt.IsEncrypted (2 ), false );
QCOMPARE (sdt.ServiceDescriptorsLength (2 ), 25U );
QCOMPARE (sdt.ServiceDescriptors (2 ), sdt.data ()+126 );
{
ServiceDescriptor *sd2 = sdt.GetServiceDescriptor (2 );
QCOMPARE (sd2->ServiceType (), 22U );
QCOMPARE (sd2->ServiceProviderNameLength (), 6U );
QCOMPARE (sd2->ServiceProviderName (), " Kordia" );
QCOMPARE (sd2->ServiceProviderShortName (), " Kordia" );
QCOMPARE (sd2->ServiceNameLength (), 14U );
QCOMPARE (sd2->ServiceName (), " Test Service 1" );
}
}
void TestMPEGTables::dvb_sdt_test2o (void )
{
PSIPTable si_table (nz_sdt_other_data);
QVERIFY (si_table.IsGood ());
QVERIFY (si_table.HasCRC ());
QVERIFY (si_table.VerifyCRC ());
QCOMPARE (si_table.Length (), 286U );
// PSIP generic fields
ServiceDescriptionTable sdt (si_table);
QCOMPARE (sdt.SectionSyntaxIndicator (), true );
QCOMPARE (sdt.PrivateIndicator (), true );
QCOMPARE (sdt.SectionLengthRaw (), 286U );
QCOMPARE (sdt.TSID (), 27U );
QCOMPARE (sdt.Version (), 11U );
QCOMPARE (sdt.IsCurrent (), true );
QCOMPARE (sdt.Section (), 0U );
QCOMPARE (sdt.LastSection (), 0U );
// SDT specific fields
QCOMPARE (sdt.OriginalNetworkID (), 8746U );
QCOMPARE (sdt.ServiceCount (), 7U );
QCOMPARE (sdt.ServiceID (0 ), 1200U );
QCOMPARE (sdt.HasEITSchedule (0 ), false );
QCOMPARE (sdt.HasEITPresentFollowing (0 ), true );
QCOMPARE (sdt.RunningStatus (0 ), 4U );
QCOMPARE (sdt.IsEncrypted (0 ), false );
QCOMPARE (sdt.ServiceDescriptorsLength (0 ), 34U );
QCOMPARE (sdt.ServiceDescriptors (0 ), sdt.data ()+ 16 );
{
ServiceDescriptor *sd0 = sdt.GetServiceDescriptor (0 );
QCOMPARE (sd0->ServiceType (), 25U );
QCOMPARE (sd0->ServiceProviderNameLength (), 4U );
QCOMPARE (sd0->ServiceProviderName (), " TVNZ" );
QCOMPARE (sd0->ServiceProviderShortName (), " TVNZ" );
QCOMPARE (sd0->ServiceNameLength (), 6U );
QCOMPARE (sd0->ServiceName (), " TVNZ 1" );
}
QCOMPARE (sdt.ServiceID (1 ), 1201U );
QCOMPARE (sdt.HasEITSchedule (1 ), false );
QCOMPARE (sdt.HasEITPresentFollowing (1 ), true );
QCOMPARE (sdt.RunningStatus (1 ), 4U );
QCOMPARE (sdt.IsEncrypted (1 ), false );
QCOMPARE (sdt.ServiceDescriptorsLength (1 ), 34U );
QCOMPARE (sdt.ServiceDescriptors (1 ), sdt.data ()+ 55 );
{
ServiceDescriptor *sd1 = sdt.GetServiceDescriptor (1 );
QCOMPARE (sd1->ServiceType (), 25U );
QCOMPARE (sd1->ServiceProviderNameLength (), 4U );
QCOMPARE (sd1->ServiceProviderName (), " TVNZ" );
QCOMPARE (sd1->ServiceProviderShortName (), " TVNZ" );
QCOMPARE (sd1->ServiceNameLength (), 6U );
QCOMPARE (sd1->ServiceName (), " TVNZ 2" );
}
QCOMPARE (sdt.ServiceDescriptors (2 ), sdt.data ()+ 94 );
QCOMPARE (sdt.ServiceDescriptors (3 ), sdt.data ()+136 );
QCOMPARE (sdt.ServiceDescriptors (4 ), sdt.data ()+178 );
QCOMPARE (sdt.ServiceDescriptors (5 ), sdt.data ()+220 );
QCOMPARE (sdt.ServiceID (6 ), 12500U );
QCOMPARE (sdt.HasEITSchedule (6 ), false );
QCOMPARE (sdt.HasEITPresentFollowing (6 ), false );
QCOMPARE (sdt.RunningStatus (6 ), 4U );
QCOMPARE (sdt.IsEncrypted (6 ), false );
QCOMPARE (sdt.ServiceDescriptorsLength (6 ), 21U );
QCOMPARE (sdt.ServiceDescriptors (6 ), sdt.data ()+264 );
{
ServiceDescriptor *sd6 = sdt.GetServiceDescriptor (6 );
QCOMPARE (sd6->ServiceType (), 12U );
QCOMPARE (sd6->ServiceProviderNameLength (), 4U );
QCOMPARE (sd6->ServiceProviderName (), " TVNZ" );
QCOMPARE (sd6->ServiceProviderShortName (), " TVNZ" );
QCOMPARE (sd6->ServiceNameLength (), 12U );
QCOMPARE (sd6->ServiceName (), " INFO CHANNEL" );
}
}
//
// DVB EventInformationTable Tests
//
const std::vector<uint8_t > nz_dvb_eit_data {
0x4E , 0xF0 , 0xFD , 0x06 , 0x41 , 0xC1 , 0x00 , 0x01 , 0x00 , 0x23 , 0x22 , 0x2A , 0x01 , 0x4E , 0x00 , 0xB5 ,
0xE9 , 0x7A , 0x11 , 0x00 , 0x00 , 0x12 , 0x30 , 0x00 , 0x80 , 0xE2 , 0x54 , 0x02 , 0x30 , 0x00 , 0x4D , 0xC6 ,
0x65 , 0x6E , 0x67 , 0x07 , 0x05 , 0x54 , 0x65 , 0x20 , 0x52 , 0x65 , 0x6F , 0xBA , 0x05 , 0x4D , 0x61 , 0x6F ,
0x72 , 0x69 , 0x20 , 0x54 , 0x65 , 0x6C , 0x65 , 0x76 , 0x69 , 0x73 , 0x69 , 0x6F , 0x6E , 0x20 , 0x73 , 0x70 ,
0x65 , 0x63 , 0x69 , 0x61 , 0x6C , 0x69 , 0x73 , 0x65 , 0x73 , 0x20 , 0x69 , 0x6E , 0x20 , 0x74 , 0x68 , 0x65 ,
0x20 , 0x73 , 0x74 , 0x6F , 0x72 , 0x69 , 0x65 , 0x73 , 0x20 , 0x6F , 0x66 , 0x20 , 0x41 , 0x6F , 0x74 , 0x65 ,
0x61 , 0x72 , 0x6F , 0x61 , 0x2E , 0x20 , 0x42 , 0x65 , 0x20 , 0x65 , 0x6E , 0x74 , 0x65 , 0x72 , 0x74 , 0x61 ,
0x69 , 0x6E , 0x65 , 0x64 , 0x20 , 0x61 , 0x6E , 0x64 , 0x20 , 0x69 , 0x6E , 0x66 , 0x6F , 0x72 , 0x6D , 0x65 ,
0x64 , 0x20 , 0x77 , 0x69 , 0x74 , 0x68 , 0x20 , 0x6E , 0x65 , 0x77 , 0x73 , 0x2C , 0x20 , 0x63 , 0x75 , 0x72 ,
0x72 , 0x65 , 0x6E , 0x74 , 0x20 , 0x61 , 0x66 , 0x66 , 0x61 , 0x69 , 0x72 , 0x73 , 0x2C , 0x20 , 0x73 , 0x70 ,
0x6F , 0x72 , 0x74 , 0x73 , 0x2C , 0x20 , 0x64 , 0x72 , 0x61 , 0x6D , 0x61 , 0x2C , 0x20 , 0x64 , 0x6F , 0x63 ,
0x75 , 0x6D , 0x65 , 0x6E , 0x74 , 0x61 , 0x72 , 0x69 , 0x65 , 0x73 , 0x20 , 0x61 , 0x6E , 0x64 , 0x20 , 0x6D ,
0x75 , 0x63 , 0x68 , 0x20 , 0x6D , 0x6F , 0x72 , 0x65 , 0x2E , 0x20 , 0x47 , 0x6F , 0x20 , 0x74 , 0x6F , 0x20 ,
0x77 , 0x77 , 0x77 , 0x2E , 0x4D , 0x61 , 0x6F , 0x72 , 0x69 , 0x74 , 0x65 , 0x6C , 0x65 , 0x76 , 0x69 , 0x73 ,
0x69 , 0x6F , 0x6E , 0x2E , 0x2E , 0x2E , 0x55 , 0x04 , 0x4E , 0x5A , 0x4C , 0x00 , 0x50 , 0x06 , 0xF6 , 0x03 ,
0x14 , 0x6D , 0x61 , 0x6F , 0x50 , 0x06 , 0xF5 , 0x0B , 0x01 , 0x6D , 0x61 , 0x6F , 0x76 , 0x8A , 0x5F , 0x20 ,
};
void TestMPEGTables::dvb_eit_test1 (void )
{
PSIPTable si_table (nz_dvb_eit_data);
QVERIFY (si_table.IsGood ());
QVERIFY (si_table.HasCRC ());
QVERIFY (si_table.VerifyCRC ());
QCOMPARE (si_table.Length (), 253U );
// PSIP generic fields
DVBEventInformationTable eit (si_table);
QCOMPARE (eit.SectionSyntaxIndicator (), true );
QCOMPARE (eit.PrivateIndicator (), true );
QCOMPARE (eit.SectionLengthRaw (), 253U );
QCOMPARE (eit.ServiceID (), 1601U );
QCOMPARE (eit.Version (), 0U );
QCOMPARE (eit.IsCurrent (), true );
QCOMPARE (eit.Section (), 0U );
QCOMPARE (eit.LastSection (), 1U );
// EIT specific fields
QCOMPARE (eit.TSID (), 35U );
QCOMPARE (eit.OriginalNetworkID (), 8746U );
QCOMPARE (eit.SegmentLastSectionNumber (), 1U );
QCOMPARE (eit.LastTableID (), 78U );
// EIT table data
QDateTime expectedDT {QDate (2022 ,07 ,10 ), QTime (11 ,00 ,00 ), Qt::UTC};
QCOMPARE (eit.EventID (0 ), 181U );
QCOMPARE (eit.StartTimeUTC (0 ), expectedDT);
QCOMPARE (eit.StartTimeUnixUTC (0 ), 1657450800U );
QCOMPARE (eit.EndTimeUnixUTC (0 ), 1657495800U );
QCOMPARE (eit.DurationInSeconds (0 ), 45000U );
QCOMPARE (eit.RunningStatus (0 ), 4U );
QCOMPARE (eit.IsScrambled (0 ), false );
QCOMPARE (eit.DescriptorsLength (0 ), 226U );
QCOMPARE (eit.Descriptors (0 ), eit.data ()+26U );
}
//
// DVB TimeDateTable Tests
//
void TestMPEGTables::dvb_tdt_test (void )
void TestMPEGTables::dvb_tdt_test1 (void )
{
const std::vector<uint8_t > si_data {
0x70 , 0x70 , 0x05 , 0xE9 , 0x69 , 0x03 , 0x46 , 0x24 ,
};
QDateTime expectedDT { QDate (2022 ,06 ,23 ), QTime (03 ,46 ,24 ), Qt::UTC };
PSIPTable si_table (si_data);
QVERIFY (si_table.IsGood ());
QVERIFY (!si_table.HasCRC ());
QVERIFY (si_table.VerifyCRC ());
QCOMPARE (si_table.Length (), 5U );
Expand All
@@ -1734,6 +2113,64 @@ void TestMPEGTables::dvb_tdt_test(void)
QCOMPARE (tdt.UTC (), expectedDT);
}
void TestMPEGTables::dvb_tdt_test2 (void )
{
const std::vector<uint8_t > nz_tdt_data {
0x70 , 0x70 , 0x05 , 0xE9 , 0x7A , 0x12 , 0x23 , 0x52 ,
};
QDateTime expectedDT { QDate (2022 ,07 ,10 ), QTime (12 ,23 ,52 ), Qt::UTC };
PSIPTable si_table (nz_tdt_data);
QVERIFY (!si_table.HasCRC ());
QVERIFY (si_table.VerifyCRC ());
QCOMPARE (si_table.Length (), 5U );
// PSIP generic fields
TimeDateTable tdt (si_table);
QCOMPARE (tdt.SectionSyntaxIndicator (), false );
QCOMPARE (tdt.SectionLengthRaw (), 5U );
// TDT specific fields
QCOMPARE (tdt.UTC (), expectedDT);
QCOMPARE (tdt.UTCUnix (), 1657455832U );
}
void TestMPEGTables::dvb_tot_test2 (void )
{
const std::vector<uint8_t > nz_tot_data {
0x73 , 0x70 , 0x1A , 0xE9 , 0x7A , 0x12 , 0x23 , 0x52 , 0xF0 , 0x0F , 0x58 , 0x0D , 0x4E , 0x5A , 0x4C , 0x02 ,
0x12 , 0x00 , 0xE9 , 0x17 , 0x14 , 0x00 , 0x00 , 0x12 , 0x00 , 0xF2 , 0x8F , 0xF4 , 0x04 ,
};
QDateTime expectedDT { QDate (2022 ,07 ,10 ), QTime (12 ,23 ,52 ), Qt::UTC };
PSIPTable si_table (nz_tot_data);
QVERIFY (si_table.HasCRC ());
QVERIFY (si_table.VerifyCRC ());
QCOMPARE (si_table.Length (), 26U );
// PSIP generic fields
TimeOffsetTable tot (si_table);
QCOMPARE (tot.SectionSyntaxIndicator (), false );
QCOMPARE (tot.SectionLengthRaw (), 26U );
// TOT specific fields
QCOMPARE (tot.UTC (), expectedDT);
QCOMPARE (tot.UTCUnix (), 1657455832U );
QCOMPARE (tot.DescriptorsLength (), 15U );
QCOMPARE (tot.Descriptors (), tot.data ()+10U );
QDateTime ToCexpectedDT { QDate (2022 ,04 ,02 ), QTime (14 ,00 ,00 ), Qt::UTC };
LocalTimeOffsetDescriptor lto (tot.Descriptors (), tot.DescriptorsLength ());
QCOMPARE (lto.Count (), 1U );
QCOMPARE (lto.CountryCode (0 ), 0x4E5A4CU );
QCOMPARE (lto.CountryCodeString (0 ), " NZL" );
QCOMPARE (lto.CountryRegionId (0 ), 0U );
QCOMPARE (lto.LocalTimeOffsetPolarity (0 ), false );
QCOMPARE (lto.LocalTimeOffset (0 ), 720U );
QCOMPARE (lto.TimeOfChange (0 ), ToCexpectedDT);
QCOMPARE (lto.TimeOfChangeUnix (0 ), 1648908000U );
QCOMPARE (lto.NextTimeOffset (0 ), 720U );
}
void TestMPEGTables::dvbdate (void )
{
const std::array<uint8_t ,5 > dvbdate_data {
Expand Down