// write atom in target file bool PVA_FF_MovieFragmentRandomAccessAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP* fp) { uint32 rendered = 0; if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); // render track fragment random access atoms if (_pTfraList->size() != 0) { for (uint32 ii = 0; ii < _pTfraList->size(); ii++) { if (!((*_pTfraList)[ii])->renderToFileStream(fp)) { return false; } rendered += ((*_pTfraList)[ii])->getSize(); } } // Render the movie fragment random access offset atom _pMfroAtom->setSize(_size); // before rendering set the size field in MFRO atom if (!_pMfroAtom->renderToFileStream(fp)) { return false; } rendered += _pMfroAtom->getSize(); return true; }
// Rendering the PVA_FF_Atom in proper format (bitlengths, etc.) to an ostream bool PVA_FF_MediaInformationAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp) { int32 rendered = 0; // Keep track of number of bytes rendered // Render PVA_FF_Atom type and size if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); // Render the data of the members once they get implemented if (!_pmediaInformationHeader->renderToFileStream(fp)) { return false; } rendered += _pmediaInformationHeader->getSize(); if (!_pdataInformationAtom->renderToFileStream(fp)) { return false; } rendered += _pdataInformationAtom->getSize(); if (!_psampleTableAtom->renderToFileStream(fp)) { return false; } rendered += _psampleTableAtom->getSize(); return true; }
bool PVA_FF_H263DecBitrateAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp) { int32 rendered = 0; if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); // Render decoder bitrate info payload if (!PVA_FF_AtomUtils::render32(fp, _avg_bitrate)) { return false; } rendered += 4; if (!PVA_FF_AtomUtils::render32(fp, _max_bitrate)) { return false; } rendered += 4; return true; }
// Rendering the PVA_FF_Atom in proper format (bitlengths, etc.) to an ostream bool PVA_FF_MediaAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp) { int32 rendered = 0; // Keep track of number of bytes rendered // Render PVA_FF_Atom type and size if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); // Render all member atoms if (!_pmediaHeader->renderToFileStream(fp)) { return false; } rendered += _pmediaHeader->getSize(); if (!_phandler->renderToFileStream(fp)) { return false; } rendered += _phandler->getSize(); if (!_pmediaInformation->renderToFileStream(fp)) { return false; } rendered += _pmediaInformation->getSize(); return true; }
// 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; }
// Write the atom into target file bool PVA_FF_MovieExtendsAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP* fp) { uint32 rendered = 0; if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); // Render the movie extend header atom if (!_pMehdAtom->renderToFileStream(fp)) { return false; } rendered += getMehdAtom()->getSize(); // render track extend atoms if (_pTrexAtomVec->size() != 0) { for (uint32 ii = 0; ii < _pTrexAtomVec->size(); ii++) { if (!((*_pTrexAtomVec)[ii])->renderToFileStream(fp)) { return false; } rendered += ((*_pTrexAtomVec)[ii])->getSize(); } } return true; }
bool PVA_FF_FileTypeAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp) { int32 rendered = 0; // Keep track of number of bytes rendered // Render PVA_FF_Atom type and size if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); if (!PVA_FF_AtomUtils::render32(fp, _Brand)) { return false; } rendered += 4; if (!PVA_FF_AtomUtils::render32(fp, _Version)) { return false; } rendered += 4; for (uint32 i = 0; i < _pCompatibleBrandVec->size(); i++) { if (!PVA_FF_AtomUtils::render32(fp, (*_pCompatibleBrandVec)[i])) { return false; } } return true; }
bool PVA_FF_AssetInfoGenreAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp) { int32 rendered = 0; // Keep track of number of bytes rendered // Render PVA_FF_Atom type and size if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); if (!PVA_FF_AtomUtils::render16(fp, _langCode)) { return false; } rendered += 2; if (!PVA_FF_AtomUtils::render16(fp, _byteOrderMask)) { return false; } rendered += 2; if (!PVA_FF_AtomUtils::renderNullTerminatedUnicodeString(fp, _genre)) { return false; } rendered += _genre.get_size() + 1; // 1 for the NULL entry //recomputeSize(); return true; }
// write atom to the target file bool PVA_FF_MovieExtendsHeaderAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP* fp) { uint32 rendered = 0; if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); // store file offset to modify duration later _fileOffset = PVA_FF_AtomUtils::getCurrentFilePosition(fp); if (!PVA_FF_AtomUtils::render32(fp, _fragmentDuration)) { return false; } rendered += 4; _oRendered = true; return true; }
bool PVA_FF_AssetInfoKeyWordsAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp) { recomputeSize(); int32 rendered = 0; // Keep track of number of bytes rendered // Render PVA_FF_Atom type and size if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); if (!PVA_FF_AtomUtils::render16(fp, _langCode)) { return false; } rendered += 2; if (!PVA_FF_AtomUtils::render8(fp, _keyWordCnt)) { return false; } rendered += 1; // calculate size of each object in the structure for (int i = 0; i < _keyWordCnt; i++) { (*_pKeyWordVect)[i]->renderToFileStream(fp); rendered += (*_pKeyWordVect)[i]->getSizeofStruct(); } return true; }
// write atom to target file bool PVA_FF_TrackFragmentAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP* fp) { uint32 rendered = 0; if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); // Render the movie fragment header atom if (!_pTfhdAtom->renderToFileStream(fp)) { return false; } rendered += _pTfhdAtom->getSize(); // render track extend atoms if (_pTrunList->size() != 0) { for (uint32 ii = 0; ii < _pTrunList->size(); ii++) { if (!((*_pTrunList)[ii])->renderToFileStream(fp)) { return false; } rendered += ((*_pTrunList)[ii])->getSize(); } } return true; }
bool PVA_FF_EVRCSpecificAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp) { int32 rendered = 0; renderAtomBaseMembers(fp); rendered += getDefaultSize(); // Render decoder specific info payload if (!PVA_FF_AtomUtils::render32(fp, _VendorCode)) { return false; } rendered += 4; if (!PVA_FF_AtomUtils::render8(fp, _encoder_version)) { return false; } rendered += 1; if (!PVA_FF_AtomUtils::render8(fp, _frames_per_sample)) { return false; } rendered += 1; return true; }
bool PVA_FF_EditListAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp) { int32 rendered = 0; uint32 i = 0; // Keep track of number of bytes rendered recomputeSize(); // Render PVA_FF_Atom type and size if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); if (!PVA_FF_AtomUtils::render32(fp, _entryCount)) { return false; } rendered += 4; for (i = 0; i < _entryCount; i++) { if (!PVA_FF_AtomUtils::render32(fp, (*_psegmentDurations)[i])) { return false; } rendered += 4; if (!PVA_FF_AtomUtils::render32(fp, (*_pmediaTimes)[i])) { return false; } rendered += 4; if (!PVA_FF_AtomUtils::render16(fp, (*_pmediaRates)[i])) { return false; } rendered += 2; if (!PVA_FF_AtomUtils::render16(fp, 0)) { return false; } rendered += 2; } return true; }
bool PVA_FF_H263SpecficAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp) { int32 rendered = 0; if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); // Render decoder specific info payload if (!PVA_FF_AtomUtils::render32(fp, _VendorCode)) { return false; } rendered += 4; if (!PVA_FF_AtomUtils::render8(fp, _encoder_version)) { return false; } rendered += 1; if (!PVA_FF_AtomUtils::render8(fp, _codec_level)) { return false; } rendered += 1; if (!PVA_FF_AtomUtils::render8(fp, _codec_profile)) { return false; } rendered += 1; if (!_ph263_decbitrateatom->renderToFileStream(fp)) { return false; } rendered += _ph263_decbitrateatom->getSize(); return true; }
// write atom in target file bool PVA_FF_TrackExtendsAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP* fp) { uint32 rendered = 0; if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); if (!PVA_FF_AtomUtils::render32(fp, _trackId)) { return false; } rendered += 4; if (!PVA_FF_AtomUtils::render32(fp, _defaultSampleDescriptionIndex)) { return false; } rendered += 4; if (!PVA_FF_AtomUtils::render32(fp, _defaultSampleDuration)) { return false; } rendered += 4; if (!PVA_FF_AtomUtils::render32(fp, _defaultSampleSize)) { return false; } rendered += 4; if (!PVA_FF_AtomUtils::render32(fp, _defaultSampleFlags)) { return false; } rendered += 4; return true; }
bool PVA_FF_AssetInfoClassificationAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp) { int32 rendered = 0; // Keep track of number of bytes rendered // Render PVA_FF_Atom type and size if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); if (!PVA_FF_AtomUtils::render32(fp, _classificationEntity)) { return false; } rendered += 4; if (!PVA_FF_AtomUtils::render16(fp, _classificationTable)) { return false; } rendered += 2; if (!PVA_FF_AtomUtils::render16(fp, _langCode)) { return false; } rendered += 2; if (!PVA_FF_AtomUtils::render16(fp, _byteOrderMask)) { return false; } rendered += 2; if (!PVA_FF_AtomUtils::renderNullTerminatedUnicodeString(fp, _classificationInfo)) { return false; } rendered += _classificationInfo.get_size() + 1; // 1 for the NULL entry return true; }
// write atom to target file bool PVA_FF_MfroAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP* fp) { uint32 rendered = 0; if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); if (!PVA_FF_AtomUtils::render32(fp, _atomSize)) { return false; } rendered += 4; return true; }
// write atom to target file bool PVA_FF_MovieFragmentHeaderAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP* fp) { uint32 rendered = 0; if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); if (!PVA_FF_AtomUtils::render32(fp, _sequenceNumber)) { return false; } rendered += 4; return true; }
// Rendering the PVA_FF_Atom in proper format (bitlengths, etc.) to an ostream bool PVA_FF_ESDAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp) { int32 rendered = 0; if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); if (!_pdescriptor->renderToFileStream(fp)) { return false; } rendered += _pdescriptor->getSizeOfDescriptorObject(); return true; }
// Rendering the PVA_FF_Atom in proper format (bitlengths, etc.) to an ostream bool PVA_FF_HandlerAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp) { int32 rendered = 0; // Keep track of number of bytes rendered // Render PVA_FF_Atom type and size if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); if (!PVA_FF_AtomUtils::render32(fp, 0)) { return false; } rendered += 4; if (!PVA_FF_AtomUtils::render32(fp, _handlerType)) { return false; } rendered += 4; uint8 reserved = 0; for (int32 i = 0; i < 12; i++) { if (!PVA_FF_AtomUtils::render8(fp, reserved)) { return false; } } rendered += 12; if (!PVA_FF_AtomUtils::renderNullTerminatedString(fp, _name)) { return false; } rendered += _name.get_size() + 1; return true; }
// Rendering the PVA_FF_Atom in proper format (bitlengths, etc.) to an ostream bool PVA_FF_SoundMediaHeaderAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp) { int32 rendered = 0; if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); // Render 32 bits of 0 if (!PVA_FF_AtomUtils::render32(fp, _reserved)) { return false; } rendered += 4; return true; }
bool PVA_FF_ProtectionSchemeInfoAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp) { int32 rendered = 0; // Keep track of number of bytes rendered // Render PVA_FF_Atom type and size if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); if (! _originalFormatAtom.renderToFileStream(fp)) { return false; } rendered += _originalFormatAtom.getSize(); return true; }
bool PVA_FF_AssetInfoRecordingYearAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp) { //recomputeSize(); int32 rendered = 0; // Keep track of number of bytes rendered // Render PVA_FF_Atom type and size if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); if (!PVA_FF_AtomUtils::render16(fp, _recordingYear)) { return false; } rendered += 2; return true; }
// Rendering the PVA_FF_Atom in proper format (bitlengths, etc.) to an ostream bool PVA_FF_DataInformationAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp) { int32 rendered = 0; // Render base PVA_FF_Atom members if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); // Render the dataReferenceAtom if (!_pdataReferenceAtom->renderToFileStream(fp)) { return false; } rendered += getDataReferenceAtom().getSize(); return true; }
bool PVA_FF_OriginalFormatAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp) { int32 rendered = 0; // Keep track of number of bytes rendered // Render PVA_FF_Atom type and size if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); // Render original format if (!PVA_FF_AtomUtils::render32(fp, _originalformat)) { return false; } rendered += 4; return true; }
// Rendering the PVA_FF_Atom in proper format (bitlengths, etc.) to an ostream bool PVA_FF_TrackReferenceTypeAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp) { int32 rendered = 0; if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); for (uint32 i = 0; i < _trackIDs->size(); i++) { if (!PVA_FF_AtomUtils::render32(fp, (*_trackIDs)[i])) { return false; } } rendered += (4 * _trackIDs->size()); return true; }
bool PVA_FF_EditAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp) { int32 rendered = 0; // Keep track of number of bytes rendered recomputeSize(); // Render PVA_FF_Atom type and size if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); // Render the data of the members once they get implemented if (!_peditList->renderToFileStream(fp)) { return false; } return true; }
// Create the atom temp file and the corresponding ofstream void PVA_FF_MediaDataAtom::prepareTempFile(uint32 aCacheSize) { if (_pofstream._filePtr == NULL && !_fileWriteError) { // 05/31/01 Generate temporary files into output path (the actual mp4 location) // _tempFilename already contains the output path ("drive:\\...\\...\\") // _tempFilename += _STRLIT("temp"); // Assign the rest of the temp filename - index plus suffix _tempFilename += (uint16)(_tempFileIndex++); // 03/21/01 Multiple instances support _tempFilename += _STRLIT("_"); _tempFilename += _tempFilePostfix; // _tempFilename += _STRLIT(".mdat"); _pofstream._osclFileServerSession = OSCL_STATIC_CAST(Oscl_FileServer*, _osclFileServerSession); PVA_FF_AtomUtils::openFile(&_pofstream, _tempFilename, Oscl_File::MODE_READWRITE | Oscl_File::MODE_BINARY, aCacheSize); if (_pofstream._filePtr == NULL) { _fileWriteError = true; } else { _oIsFileOpen = true; } // Render the atoms base members to the media data atom file renderAtomBaseMembers(&_pofstream); _fileOffsetForChunkStart = getDefaultSize(); _fileSize = getDefaultSize(); }
// Rendering the PVA_FF_Atom in proper format (bitlengths, etc.) to an ostream bool PVA_FF_H263SampleEntry::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp) { int32 rendered = 0; int32 i; if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); // From PVA_FF_SampleEntry base class for (i = 0; i < 6; i++) { if (!PVA_FF_AtomUtils::render8(fp, _reserved[i])) { return false; } rendered += 1; } if (!PVA_FF_AtomUtils::render16(fp, _dataReferenceIndex)) { return false; } for (i = 0; i < 4; i++) { if (!PVA_FF_AtomUtils::render32(fp, _reserved1[i])) { return false; } rendered += 4; } if (!PVA_FF_AtomUtils::render32(fp, _reserved2)) { return false; } if (!PVA_FF_AtomUtils::render32(fp, _reserved3)) { return false; } if (!PVA_FF_AtomUtils::render32(fp, _reserved4)) { return false; } if (!PVA_FF_AtomUtils::render32(fp, _reserved5)) { return false; } rendered += 16; if (!PVA_FF_AtomUtils::render16(fp, _reserved6)) { return false; } rendered += 2; for (i = 0; i < 32; i++) { if (!PVA_FF_AtomUtils::render8(fp, _reserved7[i])) { return false; } } rendered += 32; if (!PVA_FF_AtomUtils::render16(fp, _reserved8)) { return false; } if (!PVA_FF_AtomUtils::render16(fp, _reserved9)) { return false; } rendered += 4; if (!pH263SpecificAtom->renderToFileStream(fp)) { return false; } rendered += pH263SpecificAtom->getSize(); return true; }
bool PVA_FF_AssetInfoLocationInfoAtom::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp) { recomputeSize(); int32 rendered = 0; // Keep track of number of bytes rendered // Render PVA_FF_Atom type and size if (!renderAtomBaseMembers(fp)) { return false; } rendered += getDefaultSize(); if (!PVA_FF_AtomUtils::render16(fp, _langCode)) { return false; } rendered += 2; if (!PVA_FF_AtomUtils::render16(fp, _byteOrderMask)) { return false; } rendered += 2; if (!PVA_FF_AtomUtils::renderNullTerminatedUnicodeString(fp, _locationInfoName)) { return false; } rendered += _locationInfoName.get_size() + 1; // 1 for the NULL entry if (!PVA_FF_AtomUtils::render8(fp, _locationInfoRole)) { return false; } rendered += 1; if (!PVA_FF_AtomUtils::render32(fp, _locationInfoLongitude)) { return false; } rendered += 4; if (!PVA_FF_AtomUtils::render32(fp, _locationInfoLatitude)) { return false; } rendered += 4; if (!PVA_FF_AtomUtils::render32(fp, _locationInfoAltitude)) { return false; } rendered += 4; if (!PVA_FF_AtomUtils::render16(fp, _byteOrderMask)) { return false; } rendered += 2; if (!PVA_FF_AtomUtils::renderNullTerminatedUnicodeString(fp, _locationInfoAstrBody)) { return false; } rendered += _locationInfoAstrBody.get_size() + 1; // 1 for the NULL entry if (!PVA_FF_AtomUtils::render16(fp, _byteOrderMask)) { return false; } rendered += 2; if (!PVA_FF_AtomUtils::renderNullTerminatedUnicodeString(fp, _locationInfoAddNotes)) { return false; } rendered += _locationInfoAddNotes.get_size() + 1; // 1 for the NULL entry return true; }