PVA_FF_AssetInfoLocationInfoAtom::PVA_FF_AssetInfoLocationInfoAtom()
        : PVA_FF_FullAtom(ASSET_INFO_LOCINFO_ATOM, 0, 0)
{
    _locationInfoRole		= 0;
    _locationInfoLongitude	= 0;
    _locationInfoLatitude	= 0;
    _locationInfoAltitude	= 0;
    _locationInfoName	    = (_STRLIT(""));
    _locationInfoAstrBody    = (_STRLIT(""));
    _locationInfoAddNotes    = (_STRLIT(""));
    _byteOrderMask = BYTE_ORDER_MASK;
    _langCode = LANGUAGE_CODE_UNKNOWN;
    recomputeSize();
}
OSCL_EXPORT_REF IMpeg4File* IMpeg4File::readMP4File(MP4_FF_FILE_REFERENCE fileRef,
        uint32 parsingMode)
{
    //optimized mode is not supported if multiple file ptrs are not allowed
    if (parsingMode == 1)
    {
#ifndef OPEN_FILE_ONCE_PER_TRACK
        parsingMode = 0;
#endif
    }

    //Create a dummy string to hold the file name
    OSCL_wHeapString<OsclMemAllocator> filename(_STRLIT(""));

    MP4_FF_FILE fileStruct;
    MP4_FF_FILE *fp = &fileStruct;

    fp->_pvfile.SetFilePtr(fileRef);

    int32 fileSize;
    int32 filePointer;
    AtomUtils::seekFromStart(fp, 0);
    filePointer = AtomUtils::getCurrentFilePosition(fp);
    AtomUtils::seekToEnd(fp);
    fileSize = AtomUtils::getCurrentFilePosition(fp);
    AtomUtils::seekFromStart(fp, filePointer);

    fp->_fileSize = fileSize;

    Mpeg4File *mp4 = NULL;

    PV_MP4_FF_NEW(fp->auditCB, Mpeg4File, (fp, filename, parsingMode), mp4);

    return mp4;
}
PVA_FF_AssetInfoGenreAtom::PVA_FF_AssetInfoGenreAtom()
        : PVA_FF_FullAtom(ASSET_INFO_GENRE_ATOM, 0, 0)
{
    _genre = (_STRLIT(""));
    _langCode = LANGUAGE_CODE_UNKNOWN;
    _byteOrderMask = BYTE_ORDER_MASK;
    recomputeSize();
}
PVA_FF_AssetInfoAuthorAtom::PVA_FF_AssetInfoAuthorAtom()
        : PVA_FF_FullAtom(ASSET_INFO_AUTHOR_ATOM, 0, 0)
{
    _author = (_STRLIT(""));
    _langCode = LANGUAGE_CODE_UNKNOWN;
    _byteOrderMask = BYTE_ORDER_MASK;
    recomputeSize();
}
PVA_FF_AssetInfoPerformerAtom::PVA_FF_AssetInfoPerformerAtom()
        : PVA_FF_FullAtom(ASSET_INFO_PERF_ATOM, 0, 0)
{
    _performer = (_STRLIT(""));
    _langCode = LANGUAGE_CODE_UNKNOWN;
    _byteOrderMask = BYTE_ORDER_MASK;
    recomputeSize();
}
PVA_FF_AssetInfoCopyRightAtom::PVA_FF_AssetInfoCopyRightAtom()
        : PVA_FF_FullAtom(ASSET_INFO_CPRT_ATOM, 0, 0)
{
    _cprt = (_STRLIT(""));
    _langCode = LANGUAGE_CODE_UNKNOWN;
    _byteOrderMask = BYTE_ORDER_MASK;
    recomputeSize();
}
PVA_FF_AssetInfoDescAtom::PVA_FF_AssetInfoDescAtom()
        : PVA_FF_FullAtom(ASSET_INFO_DESCP_ATOM, 0, 0)
{
    _description = (_STRLIT(""));
    _langCode = LANGUAGE_CODE_UNKNOWN;
    _byteOrderMask = BYTE_ORDER_MASK;
    recomputeSize();
}
PVA_FF_AssetInfoAlbumAtom::PVA_FF_AssetInfoAlbumAtom()
        : PVA_FF_FullAtom(ASSET_INFO_ALBUM_TITLE_ATOM, 0, 0)
{
    _albumTitle = (_STRLIT(""));
    _langCode = LANGUAGE_CODE_UNKNOWN;
    _trackNumber = 1;
    _byteOrderMask = BYTE_ORDER_MASK;
    recomputeSize();
}
PVA_FF_AssetInfoClassificationAtom::PVA_FF_AssetInfoClassificationAtom()
        : PVA_FF_FullAtom(ASSET_INFO_CLSF_ATOM, 0, 0)
{
    _classificationInfo		=	(_STRLIT(""));
    _classificationEntity    =   0;
    _classificationTable		=   0;
    _langCode = LANGUAGE_CODE_UNKNOWN;
    _byteOrderMask = BYTE_ORDER_MASK;
    recomputeSize();
}
PVA_FF_AssetInfoRatingAtom::PVA_FF_AssetInfoRatingAtom()
        : PVA_FF_FullAtom(ASSET_INFO_RATING_ATOM, 0, 0)
{
    _ratingInfo		=	(_STRLIT(""));
    _ratingEntity    =   RATING_ENTITY_UNKNOWN;
    _ratingCriteria  =   RATING_CRITERIA_UNKNOWN;
    _langCode = LANGUAGE_CODE_UNKNOWN;
    _byteOrderMask = BYTE_ORDER_MASK;
    recomputeSize();
}
// 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();
    }