QString CableVirtualChannelTable::toString(int chan) const { static QString modnames[6] = { QObject::tr("[Reserved]"), QObject::tr("Analog"), QObject::tr("SCTE mode 1"), QObject::tr("SCTE mode 2"), QObject::tr("ATSC 8-VSB"), QObject::tr("ATSC 16-VSB"), }; static QString servicenames[5] = { QObject::tr("[Reserved]"), QObject::tr("Analog"), QObject::tr("ATSC TV"), QObject::tr("ATSC Audio"), QObject::tr("ATSC Data"), }; QString str; str.append(QString("Channel #%1 ").arg(chan)); str.append(QString("name(%1) %2-%3 ").arg(ShortChannelName(chan)) .arg(MajorChannel(chan)).arg(MinorChannel(chan))); if (ModulationMode(chan) > 5) str.append(QString("mod(UNKNOWN %1) ").arg(ModulationMode(chan))); else str.append(QString("mod(%1) ").arg(modnames[ModulationMode(chan)])); str.append(QString("cTSID(0x%1)\n") .arg(ChannelTransportStreamID(chan), 0, 16)); str.append(QString(" pnum(%1) ").arg(ProgramNumber(chan))); str.append(QString("ETM_loc(%1) ").arg(ETMlocation(chan))); str.append(QString("access_ctrl(%1) ").arg(IsAccessControlled(chan))); str.append(QString("hidden(%1)\n").arg(IsHidden(chan))); str.append(QString("path_select(%1) ").arg(IsPathSelect(chan))); str.append(QString("out_of_band(%1) ").arg(IsOutOfBand(chan))); str.append(QString("hide_guide(%1) ").arg(IsHiddenInGuide(chan))); if (ServiceType(chan) > 4) str.append(QString("service_type(UNKNOWN %1) ").arg(ServiceType(chan))); else str.append(QString("service_type(%1) ").arg(servicenames[ServiceType(chan)])); str.append(QString("source_id(%1)\n").arg(SourceID(chan))); if (0 != DescriptorsLength(chan)) { str.append(QString(" descriptors length(%1) ") .arg(DescriptorsLength(chan))); vector<const unsigned char*> desc = MPEGDescriptor::Parse(Descriptors(chan), DescriptorsLength(chan)); str.append(QString("count(%1)\n").arg(desc.size())); for (uint i = 0; i < desc.size(); i++) str.append(QString(" %1\n") .arg(MPEGDescriptor(desc[i]).toString())); } return str; }
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>"; }
QString VirtualChannelTable::ModulationModeString(uint i) const { static const char *modnames[6] = { "[Reserved]", "Analog", "SCTE mode 1", "SCTE mode 2", "ATSC 8-VSB", "ATSC 16-VSB", }; uint mode = ModulationMode(i); if (mode >= (sizeof(modnames) / sizeof(char*))) return QString("Unknown 0x%1").arg(mode,2,16,QChar('0')); else return QString(modnames[mode]); }
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; }
QString VirtualChannelTable::XMLChannelValues( uint indent_level, uint chan) const { QString indent_0 = xml_indent(indent_level); QString str; str += QString("short_channel_name=\"%1\" ").arg(ShortChannelName(chan)); str += "\n" + indent_0; str += QString("modulation=\"0x%1\" modulation_desc=\"%2\" ") .arg(ModulationMode(chan),2,16,QChar('0')) .arg(ModulationModeString(chan)); str += QString("channel_tsid=\"0x%1\"") .arg(ChannelTransportStreamID(chan),4,16,QChar('0')); str += "\n" + indent_0; str += QString("program_number=\"%1\" ").arg(ProgramNumber(chan)); str += QString("etm_location=\"%1\" ").arg(ETMlocation(chan)); str += QString("access_controlled=\"%1\"") .arg(xml_bool_to_string(IsAccessControlled(chan))); str += "\n" + indent_0; str += QString("hidden=\"%1\" ") .arg(xml_bool_to_string(IsHidden(chan))); str += QString("hide_guide=\"%1\"") .arg(xml_bool_to_string(IsHiddenInGuide(chan))); str += "\n" + indent_0; str += QString("service_type=\"0x%1\" service_type_desc=\"%2\"") .arg(ServiceType(chan),2,16,QChar('0')) .arg(ServiceTypeString(chan)); str += "\n" + indent_0; str += QString("source_id=\"0x%1\"") .arg(SourceID(chan),4,16,QChar('0')); return str; }