Exemplo n.º 1
0
// Dump the descriptor in the same format as hexdump -C
QString MPEGDescriptor::hexdump(void) const
{
    QString str, hex, prt;
    uint i, ch;
    for (i=0; i<DescriptorLength(); i++)
    {
        ch = _data[i+2];
        hex.append(QString(" %1").arg(ch, 2, 16, QChar('0')));
        prt.append(QString("%1").arg(isalnum(ch) ? QChar(ch) : '.'));
        if (((i+1) % 8) == 0)
            hex.append(" ");
        if (((i+1) % 16) == 0)
        {
            str.append(QString("      %1 %2 |%3|\n")
                .arg(i - (i % 16),3,16,QChar('0'))
                .arg(hex).arg(prt));
            hex.clear();
            prt.clear();
        }
    }
    str.append(QString("      %1 %2 |%3|")
                .arg(i - (i % 16),3,16,QChar('0'))
                .arg(hex,-50,' ').arg(prt));
    return str;
}
Exemplo n.º 2
0
/// Returns XML representation of string the TS Reader XML format.
/// When possible matching http://www.tsreader.com/tsreader/text-export.html
QString MPEGDescriptor::toStringXML(uint level) const
{
    QString indent_0 = xml_indent(level);
    QString indent_1 = xml_indent(level+1);
    QString str;

    str += indent_0 + "<Descriptor>\n";
    str += indent_1 + QString("<Tag>0x%1</Tag>\n")
        .arg(DescriptorTag(),2,16,QChar('0'));
    str += indent_1 + QString("<Description>%1</Description>\n")
        .arg(DescriptorTagString(),0,16);

    str += indent_1 + "<Data>";
    for (uint i = 0; i < DescriptorLength(); i++)
    {
        if (((i%8) == 0) && i)
            str += "\n" + indent_1 + "      ";
        str += QString("0x%1 ").arg(_data[i+2],2,16,QChar('0'));
    }

    str += "\n" + indent_1 + "</Data>\n";

    str += indent_1 + "<Decoded>" + toString() + "</Decoded>\n";

    str += indent_0 + "</Descriptor>";

    return str;
}
Exemplo n.º 3
0
void PremiereContentTransmissionDescriptor::Parse(void)
{
    _transmission_count = 0;
    _date_ptrs.clear();
    _time_ptrs.clear();
    const uint8_t *dataptr = _data + 8;
    while ((dataptr + 6) <= (_data + 2 + DescriptorLength()))
    {
        uint starttime_no = *(dataptr+2);
        for (uint i=0; i < starttime_no; i+=3)
        {
            _date_ptrs.push_back(dataptr);
            _time_ptrs.push_back(dataptr + 3 + i);
            _transmission_count++;
        }
        dataptr += 3 + starttime_no;
    }
}
Exemplo n.º 4
0
QString MPEGDescriptor::toString() const
{
    QString str;

    if (DescriptorID::registration == DescriptorTag())
        SET_STRING(RegistrationDescriptor);
    else if (DescriptorID::iso_639_language == DescriptorTag())
        SET_STRING(ISO639LanguageDescriptor);
    else if (DescriptorID::avc_video == DescriptorTag())
        SET_STRING(AVCVideoDescriptor);
    else if (DescriptorID::ac3_audio_stream == DescriptorTag())
        SET_STRING(AudioStreamDescriptor);
    else if (DescriptorID::caption_service == DescriptorTag())
        SET_STRING(CaptionServiceDescriptor);
    else if (DescriptorID::extended_channel_name == DescriptorTag())
        SET_STRING(ExtendedChannelNameDescriptor);
    else if (DescriptorID::component_name == DescriptorTag())
        SET_STRING(ComponentNameDescriptor);
    else if (DescriptorID::conditional_access == DescriptorTag())
        SET_STRING(ConditionalAccessDescriptor);
    else if (DescriptorID::network_name == DescriptorTag())
        SET_STRING(NetworkNameDescriptor);
    //else if (DescriptorID::linkage == DescriptorTag())
    //    SET_STRING(LinkageDescriptor);
    else if (DescriptorID::adaptation_field_data == DescriptorTag())
        SET_STRING(AdaptationFieldDataDescriptor);
    //else if (DescriptorID::ancillary_data == DescriptorTag())
    //    SET_STRING(AncillaryDataDescriptor);
    else if (DescriptorID::cable_delivery_system == DescriptorTag())
        SET_STRING(CableDeliverySystemDescriptor);
    else if (DescriptorID::satellite_delivery_system == DescriptorTag())
        SET_STRING(SatelliteDeliverySystemDescriptor);
    else if (DescriptorID::terrestrial_delivery_system == DescriptorTag())
        SET_STRING(TerrestrialDeliverySystemDescriptor);
    else if (DescriptorID::frequency_list == DescriptorTag())
        SET_STRING(FrequencyListDescriptor);
    else if (DescriptorID::service == DescriptorTag())
        SET_STRING(ServiceDescriptor);
    else if (DescriptorID::stream_identifier == DescriptorTag())
        SET_STRING(StreamIdentifierDescriptor);
    else if (DescriptorID::default_authority == DescriptorTag())
        SET_STRING(DefaultAuthorityDescriptor);
    else if (DescriptorID::bouquet_name == DescriptorTag())
        SET_STRING(BouquetNameDescriptor);
    else if (DescriptorID::country_availability == DescriptorTag())
        SET_STRING(CountryAvailabilityDescriptor);
    else if (DescriptorID::service_list == DescriptorTag())
        SET_STRING(ServiceListDescriptor);
    else if (DescriptorID::scte_cue_identifier == DescriptorTag())
        SET_STRING(CueIdentifierDescriptor);
    else if (DescriptorID::scte_revision_detection == DescriptorTag())
        SET_STRING(RevisionDetectionDescriptor);
    else if (DescriptorID::teletext == DescriptorTag())
        SET_STRING(TeletextDescriptor);
    /// POSSIBLY UNSAFE ! -- begin
    else if (PrivateDescriptorID::dvb_logical_channel_descriptor == DescriptorTag())
        SET_STRING(DVBLogicalChannelDescriptor);
    /// POSSIBLY UNSAFE ! -- end
    else if (IsValid())
    {
        str = QString("%1 Descriptor (0x%2) length(%3). Dumping\n")
            .arg(DescriptorTagString())
            .arg(DescriptorTag(),2,16,QChar('0'))
            .arg(DescriptorLength());
        //for (uint i=0; i<DescriptorLength(); i++)
        //    str.append(QString(" 0x%1").arg(int(_data[i+2]), 0, 16));
        str.append(hexdump());
    }
    else
    {
        str = "Invalid Descriptor";
    }
    return str;
}