Exemple #1
0
// Rendering the PVA_FF_Atom in proper format (bitlengths, etc.) to an ostream
bool
PVA_FF_ChunkOffsetAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp)
{
    int32 rendered = 0;

    if (!renderAtomBaseMembers(fp))
    {
        return false;
    }
    rendered += getDefaultSize();

    if (!PVA_FF_AtomUtils::render32(fp, getEntryCount()))
    {
        return false;
    }
    rendered += 4;

    if (_pchunkOffsets->size() < getEntryCount())
    {
        return false;
    }
    for (uint32 i = 0; i < getEntryCount(); i++)
    {
        if (!PVA_FF_AtomUtils::render32(fp, (*_pchunkOffsets)[i]))
        {
            return false;
        }
    }
    rendered += 4 * getEntryCount();

    return true;
}
Exemple #2
0
  globalafraentry AFRA::getGlobalEntry(uint32_t no) {
    globalafraentry ret;
    int offset = 13 + 12 * getEntryCount() + 4;
    if (getLongOffsets()) {
      offset = 13 + 16 * getEntryCount() + 4;
    }
    int entrysize = 20;
    if (getLongIDs()) {
      entrysize += 4;
    }
    if (getLongOffsets()) {
      entrysize += 8;
    }

    ret.time = getInt64(offset + entrysize * no);
    if (getLongIDs()) {
      ret.segment = getInt32(offset + entrysize * no + 8);
      ret.fragment = getInt32(offset + entrysize * no + 12);
    } else {
      ret.segment = getInt16(offset + entrysize * no + 8);
      ret.fragment = getInt16(offset + entrysize * no + 10);
    }
    if (getLongOffsets()) {
      ret.afraoffset = getInt64(offset + entrysize * no + entrysize - 16);
      ret.offsetfromafra = getInt64(offset + entrysize * no + entrysize - 8);
    } else {
      ret.afraoffset = getInt32(offset + entrysize * no + entrysize - 8);
      ret.offsetfromafra = getInt32(offset + entrysize * no + entrysize - 4);
    }
    return ret;
  }
Exemple #3
0
  void AFRA::setGlobalEntry(globalafraentry newEntry, uint32_t no) {
    int offset = 13 + 12 * getEntryCount() + 4;
    if (getLongOffsets()) {
      offset = 13 + 16 * getEntryCount() + 4;
    }
    int entrysize = 20;
    if (getLongIDs()) {
      entrysize += 4;
    }
    if (getLongOffsets()) {
      entrysize += 8;
    }

    setInt64(newEntry.time, offset + entrysize * no);
    if (getLongIDs()) {
      setInt32(newEntry.segment, offset + entrysize * no + 8);
      setInt32(newEntry.fragment, offset + entrysize * no + 12);
    } else {
      setInt16(newEntry.segment, offset + entrysize * no + 8);
      setInt16(newEntry.fragment, offset + entrysize * no + 10);
    }
    if (getLongOffsets()) {
      setInt64(newEntry.afraoffset, offset + entrysize * no + entrysize - 16);
      setInt64(newEntry.offsetfromafra, offset + entrysize * no + entrysize - 8);
    } else {
      setInt32(newEntry.afraoffset, offset + entrysize * no + entrysize - 8);
      setInt32(newEntry.offsetfromafra, offset + entrysize * no + entrysize - 4);
    }

    if (getInt32(offset - 4) < no + 1) {
      setInt32(no + 1, offset - 4);
    }
  }
GuiAdvancedScrollText* GuiAdvancedScrollText::removeEntry(int index)
{
    if (index < 0 || index > int(getEntryCount()))
        return this;
    entries.erase(entries.begin() + index);
    return this;
}
Exemple #5
0
  std::string AFRA::toPrettyString(uint32_t indent) {
    std::stringstream r;
    r << std::string(indent, ' ') << "[afra] Fragment Random Access (" << boxedSize() << ")" << std::endl;
    r << std::string(indent + 1, ' ') << "Version " << getVersion() << std::endl;
    r << std::string(indent + 1, ' ') << "Flags " << getFlags() << std::endl;
    r << std::string(indent + 1, ' ') << "Long IDs " << getLongIDs() << std::endl;
    r << std::string(indent + 1, ' ') << "Long Offsets " << getLongOffsets() << std::endl;
    r << std::string(indent + 1, ' ') << "Global Entries " << getGlobalEntries() << std::endl;
    r << std::string(indent + 1, ' ') << "TimeScale " << getTimeScale() << std::endl;

    uint32_t count = getEntryCount();
    r << std::string(indent + 1, ' ') << "Entries (" << count << ") " << std::endl;
    for (uint32_t i = 0; i < count; ++i) {
      afraentry tmpent = getEntry(i);
      r << std::string(indent + 1, ' ') << i << ": Time " << tmpent.time << ", Offset " << tmpent.offset << std::endl;
    }

    if (getGlobalEntries()) {
      count = getGlobalEntryCount();
      r << std::string(indent + 1, ' ') << "Global Entries (" << count << ") " << std::endl;
      for (uint32_t i = 0; i < count; ++i) {
        globalafraentry tmpent = getGlobalEntry(i);
        r << std::string(indent + 1, ' ') << i << ": T " << tmpent.time << ", S" << tmpent.segment << "F" << tmpent.fragment << ", "
          << tmpent.afraoffset << "/" << tmpent.offsetfromafra << std::endl;
      }
    }
    return r.str();
  }
Exemple #6
0
 uint32_t AFRA::getGlobalEntryCount() {
   if (!getGlobalEntries()) {
     return 0;
   }
   int entrysize = 12;
   if (getLongOffsets()) {
     entrysize = 16;
   }
   return getInt32(13 + entrysize * getEntryCount());
 }
Exemple #7
0
CL_NetGameEvent RankingEntries::buildEvent() const
{
	CL_NetGameEvent event(EVENT_RANKING_ENTRIES);
	event.add_argument(m_token);
	event.add_argument(getEntryCount());

	foreach(const PlacedRankingEntry &entry, m_rankingEntries) {
		event.add_argument(entry.pid);
		event.add_argument(entry.name);
		event.add_argument(entry.timeMs);
		event.add_argument(entry.place);
	}
Exemple #8
0
void
PVA_FF_ChunkOffsetAtom::recomputeSize()
{
    uint32 size = getDefaultSize();
    size += 4; // For entryCount
    size += 4 * getEntryCount();

    _size = size;

    // Update the parent atom size
    if (_pparent != NULL)
    {
        _pparent->recomputeSize();
    }
}
Exemple #9
0
 void AFRA::setEntry(afraentry newEntry, uint32_t no) {
   int entrysize = 12;
   if (getLongOffsets()) {
     entrysize = 16;
   }
   setInt64(newEntry.time, 13 + entrysize * no);
   if (getLongOffsets()) {
     setInt64(newEntry.offset, 21 + entrysize * no);
   } else {
     setInt32(newEntry.offset, 21 + entrysize * no);
   }
   if (no + 1 > getEntryCount()) {
     setInt32(no + 1, 9);
   }
 }
string GuiAdvancedScrollText::getEntryText(int index)
{
    if (index < 0 || index >= int(getEntryCount()))
        return "";
    return entries[index].text;
}