Exemple #1
0
QString SCTENetworkInformationTable::toStringXML(uint indent_level) const
{
    QString indent_0 = xml_indent(indent_level);
    QString indent_1 = xml_indent(indent_level + 1);

    QString str = indent_0 + "<SCTENetworkInformationSection psip=\"scte\" ";
    str += QString("transmission_medium=\"%1\" ").arg(TransmissionMedium());
    str += QString("first_index=\"%1\" ").arg(FirstIndex());
    str += "\n" + indent_1;
    str += QString("number_of_records=\"%1\" ").arg(NumberOfRecords());
    str += QString("table_subtype=\"%1\"").arg(TableSubtype());
    str += PSIPTable::XMLValues(indent_level + 1) + ">\n";

    if (kCarrierDefinitionSubtable == TableSubtype())
    {
        for (uint i = 0;  i < NumberOfRecords(); i++)
            str += CarrierDefinition(i).toStringXML(indent_level + 1) + "\n";
    }
    else if (kModulationModeSubtable == TableSubtype())
    {
        for (uint i = 0;  i < NumberOfRecords(); i++)
            str += ModulationMode(i).toStringXML(indent_level + 1) + "\n";
    }

    vector<const unsigned char*> desc =
        MPEGDescriptor::Parse(Descriptors(), DescriptorsLength());
    for (uint i = 0; i < desc.size(); i++)
    {
        str += MPEGDescriptor(desc[i], 300)
            .toStringXML(indent_level + 1) + "\n";
    }

    return str + indent_0 + "</SCTENetworkInformationSection>";
}
Exemple #2
0
bool SCTENetworkInformationTable::Parse(void)
{
    _ptrs.clear();

    if ((kCarrierDefinitionSubtable == TableSubtype()) ||
        (kModulationModeSubtable == TableSubtype()))
    {
        uint offset = (kCarrierDefinitionSubtable == TableSubtype()) ? 6 : 7;
        const unsigned char *next = pesdata() + 7;
        for (uint i = 0; i < NumberOfRecords(); i++)
        {
            _ptrs.push_back(next);
            uint desc_count = next[offset-1];
            next += offset;
            for (uint j = 0; j < desc_count; j++)
            {
                MPEGDescriptor desc(next);
                if (!desc.IsValid())
                {
                    _ptrs.clear();
                    return false;
                }
                next += desc.size();
            }
        }
        _ptrs.push_back(next);
        return true;
    }

    return false;
}
Exemple #3
0
QString SCTENetworkInformationTable::toString(void) const
{
    QString str = QString("Network Information Section (SCTE) crc(0x%1)\n")
        .arg(CRC(),8,16,QChar('0'));
    str += QString("first_index(%1) number_of_records(%2) table_subtype(%3)\n")
        .arg(FirstIndex()).arg(NumberOfRecords()).arg(TableSubtype());
    if (kCarrierDefinitionSubtable == TableSubtype())
    {
        for (uint i = 0;  i < NumberOfRecords(); i++)
            str += CarrierDefinition(i).toString() + "\n";
    }
    else if (kModulationModeSubtable == TableSubtype())
    {
        for (uint i = 0;  i < NumberOfRecords(); i++)
            str += ModulationMode(i).toString() + "\n";
    }

    return str;
}
Exemple #4
0
/***********************************************************************
 * void Ebase::GetRecord()
 ***********************************************************************
 */
EbRecord *
Ebase::GetRecord(EbUint32 offset)
{
    if (offset >= NumberOfRecords())
    {
        EB_ASSERT (0 == "EBE_INVALID_RECORD");
    }

    // get record according to 0-th index.
    return GetRecordByHandle(_Int32IndexEntry->Get(offset));
}