void CItemsInfo::AddItem(CItemInfo* item) { // clear cached maps (byname and bytag) m_ItemsByName.reset(0); m_ZeroTagIndex = kInvalidMember; m_ItemsByTag.reset(0); m_ItemsByOffset.reset(0); // update item's tag if ( !item->GetId().HaveExplicitTag() ) { TTag tag = CMemberId::eFirstTag; if ( !Empty() ) { TMemberIndex lastIndex = LastIndex(); const CItemInfo* lastItem = GetItemInfo(lastIndex); if ( lastIndex != FirstIndex() || !lastItem->GetId().HaveParentTag() ) tag = lastItem->GetId().GetTag() + 1; } item->GetId().SetTag(tag, false); } // add item m_Items.push_back(AutoPtr<CItemInfo>(item)); item->m_Index = LastIndex(); }
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>"; }
void Spectrum::Consume(const FFTFrame &frame) { for (int i = 0; i < NumBands(); i++) { int first = FirstIndex(i); int last = LastIndex(i); double numerator = 0.0; double denominator = 0.0; for (int j = first; j < last; j++) { double s = frame[j]; numerator += j * s; denominator += s; } m_features[i] = denominator / (last - first); } m_consumer->Consume(m_features); }
TMemberIndex CItemsInfo::Find(TTag tag) const { TMemberIndex zero_index = m_ZeroTagIndex; if ( zero_index == kInvalidMember && !m_ItemsByTag.get() ) { zero_index = GetItemsByTagInfo().first; } if ( zero_index != kInvalidMember ) { TMemberIndex index = tag + zero_index; if ( index < FirstIndex() || index > LastIndex() ) return kInvalidMember; return index; } else { TItemsByTag::const_iterator mi = m_ItemsByTag->find(tag); if ( mi == m_ItemsByTag->end() ) return kInvalidMember; return mi->second; } }
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; }
LoopTreeNode* LoopBlocking:: ApplyBlocking( const CompSliceDepGraphNode::FullNestInfo& nestInfo, LoopTreeDepComp& comp, DependenceHoisting &op, LoopTreeNode *&top) { const CompSliceNest& slices = *nestInfo.GetNest(); if (DebugLoop()) { std::cerr << "\n Blocking slices: " << slices.toString() << "\n"; } LoopTreeNode *head = 0; AstInterface& fa = LoopTransformInterface::getAstInterface(); for (int j = FirstIndex(); j >= 0; j = NextIndex(j)) { top = op.Transform( comp, slices[j], top); SymbolicVal b = BlockSize(j); if (DebugLoop()) { std::cerr << "\n after slice " << j << " : \n"; //top->DumpTree(); comp.DumpTree(); comp.DumpDep(); std::cerr << "\n blocking size for this loop is " << b.toString() << "\n"; } if (!(b == 1)) { LoopTreeNode *n = LoopTreeBlockLoop()( top, SymbolicVar(fa.NewVar(fa.GetType("int")), AST_NULL), b); if (DebugLoop()) { std::cerr << "\n after tiling loop with size " << b.toString() << " : \n"; //top->DumpTree(); comp.DumpTree(); comp.DumpDep(); } if (head == 0) head = n; else { while (n->FirstChild() != head) LoopTreeSwapNodePos()( n->Parent(), n); } } } return head; }
LoopTreeNode* LoopBlocking:: ApplyBlocking( const CompSliceDepGraphNode::FullNestInfo& nestInfo, LoopTreeDepComp& comp, DependenceHoisting &op, LoopTreeNode *&top) { const CompSliceNest& slices = *nestInfo.GetNest(); LoopTreeNode *head = 0; AstInterface& fa = LoopTransformInterface::getAstInterface(); for (int j = FirstIndex(); j >= 0; j = NextIndex(j)) { top = op.Transform( comp, slices[j], top); SymbolicVal b = BlockSize(j); if (!(b == 1)) { LoopTreeNode *n = LoopTreeBlockLoop()( top, SymbolicVar(fa.NewVar(fa.GetType("int")), AST_NULL), b); if (head == 0) head = n; else { while (n->FirstChild() != head) LoopTreeSwapNodePos()( n->Parent(), n); } } } return head; }