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>"; }
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; }
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; }
/*********************************************************************** * 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)); }